在 Win2008 R2 服务器上从 Powershell 获取 NIC 速度

在 Win2008 R2 服务器上从 Powershell 获取 NIC 速度

我正在尝试通过 Powershell 获取某些服务器上的 NIC 速度。对于我的实验室服务器,我知道那里有一个 1GB NIC。但是,当我通过 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” - 我检查了 WMI 属性中的 SpeedWin32_NetworkAdapter并返回“ Bits per second” - 但是,换算后看起来好像比每秒 1GB 多得多?

知道为什么我会得到这个结果吗?还有确定 NIC 速度的最佳方法(并确认它确实是 1GB)?

由于我有很多服务器 - 如果您有任何想法,我真的很想知道获取此信息的最佳方法。

答案1

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

导入模块 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

答案2

对于原始查询,如果用 替换speed@{n="Speed";e={$_.speed/1mb}}它会返回计算结果,以 Mega-

如果您这样做@{n="Speed";e={$_.speed/1gb}},它将以 Gbits 为单位返回结果。

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 中的任何选择。

相关内容