在Win2008 R2服务器上从Powershell获得网卡速度

我试图通过我的一些服务器上的Powershell获得网卡的速度。 对于我的实验室服务器,我知道那里有一个1GB的网卡。 但是,当我通过Powershell做到这一点时,我得到了下面的奇怪的数字:

Get-WmiObject -Class Win32_NetworkAdapter -filter "Name LIKE '%Intel%' OR Name LIKE '%HP%' OR Name LIKE '%Broadcom%'" | select name, speed | ft -AutoSize name speed ---- ----- Intel(R) 82580 Gigabit Network Connection 9223372036854775807 

我回来的速度是“ 9223372036854775807 ” – 我在Win32_NetworkAdapter检查了速度的WMI属性,它返回“ Bits per second ” – 但是,在转换时,这看起来像每秒超过1GB?

任何想法,为什么我回来这也是确定网卡速度的最佳方式(并确认它绝对是1GB)?

因为我有很多服务器 – 如果您有任何想法,我真的很想知道获取这些信息的最佳方式。

获取域计算机列表(在AD中运行):

Import-Module ActiveDirectory Get-ADComputer -Filter * | ForEach-Object {$ _。Name}

或从一个文件:

 $computers = Get-Content -Path computers.txt 

对于多台电脑:

 foreach ($comp in $computers) { echo $comp Get-WmiObject win32_networkadapter -ComputerName $comp | Select Name,Manufacturer,Description ,AdapterType,Speed,MACAddress,NetConnectionID | Where-Object {$_.AdapterType -like "*Ethernet*"} } 

这将打印列表中的每台计算机:

 Name : Broadcom NetLink (TM) Gigabit Ethernet Manufacturer : Broadcom Corporation Description : Broadcom NetLink (TM) Gigabit Ethernet AdapterType : Ethernet 802.3 Speed : 1000000000 MACAddress : B8:AC:6F:41:B5:D3 NetConnectionID : Ethernet 

注意:速度是每秒位数,根据需要转换为Gbps或Mbps

对于原始查询,如果用@{n="Speed";e={$_.speed/1mb}}replacespeed ,则返回一个以兆位为单位的计算结果。

如果你做@{n="Speed";e={$_.speed/1gb}} ,那么它将以Gbits的forms返回结果。

Powershell不知道原来的措施是什么,MB / MB是相同的PowerShell。 因此,如果你需要的结果是以字节为单位的话 ,你可以手动除以8的结果, @{n="Speed";e={$_.speed/1mb/8}}

改变的脚本将是:

 Get-WmiObject -Class Win32_NetworkAdapter -filter "Name LIKE '%Intel%' OR Name LIKE '%HP%' OR Name LIKE '%Broadcom%'" | select name, @{n="Speed";e={$_.speed/1gb}} | ft -AutoSize 

而这种替代格式@{n="name";e={$_.property *operations*}}将适用于PowerShell中的任何select。