用于获取特定Windows计算机网卡运行速度的PowerShell脚本是什么?
我知道这可以使用基于WMI查询的语句完成,并在我完成后发布答案。
答案 0 :(得分:9)
基本命令是
Get-WmiObject -ComputerName 'servername' -Class Win32_NetworkAdapter | `
Where-Object { $_.Speed -ne $null -and $_.MACAddress -ne $null } | `
Format-Table -Property SystemName,Name,NetConnectionID,Speed
请注意,ComputerName参数采用数组,因此您可以针对多台计算机运行此操作,前提是您拥有权限。用*****替换Format-Table属性列表以获得更全面的可用属性列表。您可能希望过滤这些属性以删除您不感兴趣的条目。
使用内置字节乘数后缀(MB,GB等)也可以根据您的需要提高速度。您可以在Format-Table -Property数组上将其指定为HashTable条目,例如
Format-Table -Property NetConnectionID,@{Label='Speed(GB)'; Expression = {$_.Speed/1GB}}
答案 1 :(得分:1)
从Windows 8 / Server 2012开始,您可以尝试Get-NetAdapter
以及更多专门的命令,例如Get-NetAdapterAdvancedProperty
:
https://docs.microsoft.com/en-us/powershell/module/netadapter/get-netadapter
您还可以使用更全面的WMI类MSFT_NetAdapter
来创建自定义输出。 MSFT_NetAdapter
的描述如下:
https://msdn.microsoft.com/en-us/library/Hh968170(v=VS.85).aspx
以下是列出本地计算机上已启用(状态2),已连接(OperationalStatusDownMediaDisconnected $ false),802.3有线(NdisPhysicalMedium 14),非虚拟适配器的速度和其他属性的命令:
Get-WmiObject -Namespace Root\StandardCimv2 -Class MSFT_NetAdapter | `
Where-Object { $_.State -eq 2 -and $_.OperationalStatusDownMediaDisconnected -eq $false -and `
$_.NdisPhysicalMedium -eq 14 -and $_.Virtual -eq $false } | `
Format-Table Name,Virtual,State,NdisPhysicalMedium, `
@{Label='Connected'; Expression={-not $_.OperationalStatusDownMediaDisconnected}}, `
@{Label='Speed(MB)'; Expression = {$_.Speed/1000000}}, `
FullDuplex,InterfaceDescription
答案 2 :(得分:0)
我目前的版本,取出蓝牙和无线网卡(使用powershell -file script.ps1运行):
# return network speed as exit code
$speed = Get-WmiObject -Class Win32_NetworkAdapter |
where { $_.speed -and $_.macaddress -and
$_.name -notmatch 'wireless|wi-fi|bluetooth|802\.11' } | select -expand speed
exit $speed/1000000