Назад | Перейти на главную страницу

Получение скорости сетевого адаптера от Powershell на сервере Win2008 R2

Я пытаюсь получить скорость сетевого адаптера через Powershell на некоторых из моих серверов. Я знаю, что в моем лабораторном сервере есть сетевая карта емкостью 1 ГБ. Однако, когда я делаю это через 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 на скорость в Win32_NetworkAdapter и он возвращается "Bits per second"- однако в конвертации это выглядит намного больше, чем 1 ГБ в секунду?

Любая идея о том, почему я получаю это обратно, а также лучший способ определить скорость сетевого адаптера (и подтвердить, что это определенно 1 ГБ)?

Поскольку у меня много серверов, я бы предпочел узнать, как лучше всего получить эту информацию, если у вас есть какие-либо идеи.

Получите список компьютеров домена (запущенных в AD):

Модуль импорта ActiveDirectory Get-ADComputer -Filter * | ForEach-Object {$ _. Имя}

Или из файла:

$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

Примечание. Скорость указывается в битах в секунду, при необходимости конвертируйте в Гбит / с или Мбит / с.

Если в исходном запросе заменить speed с участием @{n="Speed";e={$_.speed/1mb}}, он возвращает вычисленный результат в мега-биты.

Если вы это сделаете @{n="Speed";e={$_.speed/1gb}}, он уважительно вернет результат в Гбитах.

Powershell не знает, какова исходная мера, а МБ / МБ - это то же самое, что и 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.