2010-06-09 6 views

Respuesta

8

Un comando básico es

Get-WmiObject -ComputerName 'servername' -Class Win32_NetworkAdapter | ` 
    Where-Object { $_.Speed -ne $null -and $_.MACAddress -ne $null } | ` 
    Format-Table -Property SystemName,Name,NetConnectionID,Speed 

Tenga en cuenta que el parámetro ComputerName toma una matriz para que pueda ejecutar esto en contra de varios equipos siempre que disponga de los derechos. Reemplace la lista de propiedades de Format-Table con ***** para obtener una lista más completa de las propiedades disponibles. Es posible que desee filtrar estas propiedades para deshacerse de las entradas que no le interesan.

El uso del byte incorporado Los sufijos del multiplicador (MB, GB, etc.) también harían que la velocidad sea más legible según sus necesidades. Puede especificar esto como una entrada HashTable en la matriz Format-Table-Property, p. Ej.

Format-Table -Property NetConnectionID,@{Label='Speed(GB)'; Expression = {$_.Speed/1GB}} 
+0

Una respuesta agradable! Quitaría las partes '-ne $ null'. –

+0

En realidad, se devolvieron bastantes entradas para la clase Win32_NetworkAdapter, compruébalo. Estoy usando el -ne $ null para filtrar las entradas para que pueda ver las entradas reales de las tarjetas físicas reales, pero puedes adaptarlas como mejor te parezca. –

+0

[System.Net.NetworkInformation.NetworkInterface] :: GetAllNetworkInterfaces() funciona solo contra la máquina local. –

0

Mi versión actual, sacando bluetooth inalámbricos y tarjetas (correr con PowerShell script.ps1 -file):

# 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 
Cuestiones relacionadas