Obtendo a velocidade do NIC do Powershell no servidor Win2008 R2

1

Estou tentando obter a velocidade da NIC via Powershell em alguns dos meus servidores. Para o meu servidor de laboratório, eu sei que há um NIC de 1GB lá. No entanto, quando faço isso via Powershell, recebo o número abaixo estranho:

 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

A velocidade que estou recebendo é " 9223372036854775807 " - verifiquei a propriedade WMI para Velocidade em Win32_NetworkAdapter e ela retorna " Bits per second " - no entanto, na conversão, isso parece muito mais do que 1GB por segundo ?

Alguma idéia de por que estou recebendo isso de volta e também a melhor maneira de determinar a velocidade da NIC (e para confirmar que ela é definitivamente 1GB)?

Como eu tenho muitos servidores - eu realmente prefiro saber a melhor maneira de obter essas informações se você tiver alguma idéia.

    
por lara400 16.04.2016 / 17:12

2 respostas

1

Obtenha uma lista de computadores do domínio (em execução no AD):

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

Ou de um arquivo:

$computers = Get-Content -Path computers.txt

Para vários computadores:

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*"}

}

Isso será impresso para cada computador na lista:

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

Nota: A velocidade está em bits por segundo, converta para Gbps ou Mbps conforme necessário

    
por 16.04.2016 / 19:18
0

Para a consulta original, se você substituir speed por @{n="Speed";e={$_.speed/1mb}} , retornará um resultado calculado, em Mega- bits .

Se você fizer @{n="Speed";e={$_.speed/1gb}} , ele retornará o resultado em Gbits respeitosamente.

O Powershell não sabe qual é a medida original e MB / mb é o mesmo para o powershell. Portanto, se você precisar que o resultado esteja em bytes , divida manualmente pelo resultado por outro 8, @{n="Speed";e={$_.speed/1mb/8}}

O script alterado seria:

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

E esse formato alternativo @{n="name";e={$_.property *operations*}} funcionaria para qualquer seleção no PowerShell.

    
por 18.04.2016 / 22:28