PowerShell脚本,以获得Windows计算机的网卡速度

时间:2010-06-09 01:05:27

标签: windows powershell wmi

用于获取特定Windows计算机网卡运行速度的PowerShell脚本是什么?

我知道这可以使用基于WMI查询的语句完成,并在我完成后发布答案。

3 个答案:

答案 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