Scripts/Get-PCNetworkAdapter.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
Function Get-PCNetworkAdapter {

    <#
 
    .SYNOPSIS
    Get network adapter information/configuration
 
    .DESCRIPTION
    Get network adapter information/configuration
 
    .PARAMETER ComputerName
    The target computer name
 
    .EXAMPLE
    Get-PCNetworkAdapter -ComputerName LabPC2024
 
    .NOTES
    N/A
 
    .LINK
    N/A
 
    #>


    [CmdletBinding ()]

    Param (

        [Parameter (Mandatory = $True,
                    ValueFromPipeline = $True,
                    ValueFromPipelineByPropertyName = $True,
                    HelpMessage = 'Enter computer name'
                   )
        ]

        [String[]]$ComputerName

    )

    BEGIN {

        $NetConnectionStatus = @{

            '0' = 'Disconnected'
            '1' = 'Connecting'
            '2' = 'Connected'
            '3' = 'Disconnecting'
            '4' = 'Hardware not present'
            '5' = 'Hardware disabled'
            '6' = 'Hardware malfunction'
            '7' = 'Media disconnected'
            '8' = 'Authenticating'
            '9' = 'Authentication succeeded'
            '10' = 'Authentication failed'
            '11' = 'Invalid address'
            '12' = 'Credentials required'

        }

        Function Show-Output ($Computer, $Values, $Status) {

            If ($Values.TimeOfLastReset) {

                [Object]$TimeOfLastReset = [System.Management.ManagementDateTimeConverter]::ToDateTime($Values.TimeOfLastReset).ToUniversalTime()

            }

            [PSCustomObject]@{

                ComputerName = $Computer
                Caption = $Values.Name
                Description = $Values.Description
                DeviceID = $Values.DeviceID
                AdapterType = $Values.AdapterType
                AdapterTypeId = $Values.Adapter.TypeID
                NetConnectionID = $Values.NetConnectionID
                AutoSense = $Values.AutoSense
                MACAddress = $Values.MACAddress
                Manufacturer = $Values.Manufacturer
                Speed = $Values.Speed
                MaxSpeed = $Values.MaxSpeed
                NetEnabled = $Values.NetEnabled
                PhysicalAdapter = $Values.PhysicalAdapter
                NetConnectionStatus = $NetConnectionStatus["$($Values.NetConnectionStatus)"]
                ServiceName = $Values.ServiceName
                TimeOfLastReset = $TimeOfLastReset
                Status = $Status

            }

        }

    }

    PROCESS {

        ForEach ($Computer In $ComputerName) {

            If (Test-Connection -ComputerName $Computer -Count 1 -Quiet) {

                Try {

                    $Data = Get-WmiObject Win32_NetworkAdapter -ComputerName $Computer | Select-Object *

                    ForEach ($Item In $Data) {

                        Show-Output $Computer.ToUpper() $Item 'Ok'

                    }

                }

                Catch {

                    Show-Output $Computer.ToUpper() $Null $PSItem.Exception.Message

                }

            }

            Else {

                Show-Output $Computer.ToUpper() $Null 'Unreachable'

            }

        }

    }

    END {}

}