在多台机器上查询 NetAdapter
Query the NetAdapter on Multiple Machines
#列出我们将从中查询的机器
$Machines = Get-ADComputer -Filter * -SearchBase 'OU=Laptops,OU=Win10Modern,OU=LN,OU=Workstations,DC=cooley,DC=com' | Select-Object Name
#Getting the Network Adapter version for Wi-Fi Adapter
ForEach ($Machine in $Machines) {
Get-NetAdapter | Select-Object Name,InterfaceDescription,DriverVersion,DriverDate,DriverProvider
}
我认为您不能使用 Get-NetAdapter
连接到远程计算机。
但是您可以使用 Get-WmiObject Win32_NetworkAdapter -ComputerName
.
像这样:
ForEach ($Machine in $Machines) {
Get-WmiObject -Class Win32_NetworkAdapter -Filter "NetConnectionStatus = 2" -ComputerName $Machine
}
您需要熟悉 Win32_NetworkAdapter class 的属性。您可以通过 运行 此命令查看所有属性:
Get-WmiObject -Class Win32_NetworkAdapter -ComputerName "Localhost" | fl * -Force
或者您可以使用此命令查看所有可用的属性(和方法)。
Get-WmiObject -Class Win32_NetworkAdapter -ComputerName "Localhost" | Get-Member
大多数电脑都会有不止一张网卡(有些是隐藏的),你必须过滤掉不相关的网卡。
目前,您的代码循环遍历变量 $Machines
中的 个对象 ,其中每个对象都有一个名为 Name
的 属性。
为了仅获取名称 values,请使用 Select-Object -ExpandProperty Name
或获取这样的名称数组:
# get an array of computernames
$Machines = (Get-ADComputer -Filter * -SearchBase 'OU=Laptops,OU=Win10Modern,OU=LN,OU=Workstations,DC=cooley,DC=com').Name
接下来遍历这些计算机名称并让每台计算机 运行 Get-NetAdapter
cmdlet:
# capture the output(s) in variable $result
$result = foreach ($Machine in $Machines) {
if (Test-Connection -ComputerName $Machine -Count 1 -Quiet) {
Invoke-Command -ComputerName $Machine -ScriptBlock {
Get-NetAdapter | Select-Object SystemName,Name,InterfaceDescription,
DriverVersion,DriverDate,DriverProvider,Status,AdminStatus
}
}
else {
Write-Warning "Computer '$Machine' does not respond"
}
}
# output on screen
$result
# or to GridView
$result | Out-GridView -Title 'NetAdapterInfo'
# or to CSV file
$result | Export-Csv -Path 'X:\NetAdapterInfo.csv' -NoTypeInformation
AdminStatus
是一个设置(启用-->'up';禁用-->'down')
Status
是运行状态(连接 --> 'up';断开连接 --> 'down')
#列出我们将从中查询的机器
$Machines = Get-ADComputer -Filter * -SearchBase 'OU=Laptops,OU=Win10Modern,OU=LN,OU=Workstations,DC=cooley,DC=com' | Select-Object Name
#Getting the Network Adapter version for Wi-Fi Adapter
ForEach ($Machine in $Machines) {
Get-NetAdapter | Select-Object Name,InterfaceDescription,DriverVersion,DriverDate,DriverProvider
}
我认为您不能使用 Get-NetAdapter
连接到远程计算机。
但是您可以使用 Get-WmiObject Win32_NetworkAdapter -ComputerName
.
像这样:
ForEach ($Machine in $Machines) {
Get-WmiObject -Class Win32_NetworkAdapter -Filter "NetConnectionStatus = 2" -ComputerName $Machine
}
您需要熟悉 Win32_NetworkAdapter class 的属性。您可以通过 运行 此命令查看所有属性:
Get-WmiObject -Class Win32_NetworkAdapter -ComputerName "Localhost" | fl * -Force
或者您可以使用此命令查看所有可用的属性(和方法)。
Get-WmiObject -Class Win32_NetworkAdapter -ComputerName "Localhost" | Get-Member
大多数电脑都会有不止一张网卡(有些是隐藏的),你必须过滤掉不相关的网卡。
目前,您的代码循环遍历变量 $Machines
中的 个对象 ,其中每个对象都有一个名为 Name
的 属性。
为了仅获取名称 values,请使用 Select-Object -ExpandProperty Name
或获取这样的名称数组:
# get an array of computernames
$Machines = (Get-ADComputer -Filter * -SearchBase 'OU=Laptops,OU=Win10Modern,OU=LN,OU=Workstations,DC=cooley,DC=com').Name
接下来遍历这些计算机名称并让每台计算机 运行 Get-NetAdapter
cmdlet:
# capture the output(s) in variable $result
$result = foreach ($Machine in $Machines) {
if (Test-Connection -ComputerName $Machine -Count 1 -Quiet) {
Invoke-Command -ComputerName $Machine -ScriptBlock {
Get-NetAdapter | Select-Object SystemName,Name,InterfaceDescription,
DriverVersion,DriverDate,DriverProvider,Status,AdminStatus
}
}
else {
Write-Warning "Computer '$Machine' does not respond"
}
}
# output on screen
$result
# or to GridView
$result | Out-GridView -Title 'NetAdapterInfo'
# or to CSV file
$result | Export-Csv -Path 'X:\NetAdapterInfo.csv' -NoTypeInformation
AdminStatus
是一个设置(启用-->'up';禁用-->'down')
Status
是运行状态(连接 --> 'up';断开连接 --> 'down')