Скрипт PowerShell для получения скорости сетевой карты компьютера с Windows - PullRequest
7 голосов
/ 09 июня 2010

Что такое сценарий PowerShell для определения скорости, с которой работает сетевая карта конкретного компьютера с Windows?

Я знаю, что это можно сделать с помощью оператора на основе запросов WMI, и я опубликую ответ, как только я его обработаю.

Ответы [ 3 ]

9 голосов
/ 09 июня 2010

Базовая команда:

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

Обратите внимание, что параметр ComputerName принимает массив, поэтому вы можете запускать его на нескольких компьютерах, если у вас есть права.Замените список свойств Format-Table на *****, чтобы получить более полный список доступных свойств.Возможно, вы захотите отфильтровать эти свойства, чтобы избавиться от записей, которые вас не интересуют.

Использование встроенных байтовых суффиксов множителя (МБ, ГБ и т. Д.) Также сделает скорость более читабельной в зависимости от ваших потребностей,Вы можете указать это как запись HashTable в массиве Format-Table -Property, например,

Format-Table -Property NetConnectionID,@{Label='Speed(GB)'; Expression = {$_.Speed/1GB}}
1 голос
/ 15 декабря 2018

Начиная с Windows 8 / Server 2012, вы можете попробовать Get-NetAdapter и несколько более специализированных команд, таких как Get-NetAdapterAdvancedProperty:

https://docs.microsoft.com/en-us/powershell/module/netadapter/get-netadapter

Вы также можете использовать более полный класс WMI MSFT_NetAdapter для создания настраиваемого вывода. MSFT_NetAdapter описано здесь:

https://msdn.microsoft.com/en-us/library/Hh968170(v=VS.85).aspx

Вот команда для отображения скорости и других свойств включенных (состояние 2), подключенных (OperationalStatusDownMediaDisconnected $ false), 802.3 проводных (NdisPhysicalMedium 14), не виртуальных адаптеров на локальном компьютере:

Get-WmiObject -Namespace Root\StandardCimv2 -Class MSFT_NetAdapter | `
  Where-Object { $_.State -eq 2 -and $_.OperationalStatusDownMediaDisconnected -eq $false -and `
                 $_.NdisPhysicalMedium -eq 14 -and $_.Virtual -eq $false } | `
  Format-Table Name,Virtual,State,NdisPhysicalMedium, `
  @{Label='Connected'; Expression={-not $_.OperationalStatusDownMediaDisconnected}}, `
  @{Label='Speed(MB)'; Expression = {$_.Speed/1000000}}, `
  FullDuplex,InterfaceDescription
0 голосов
/ 17 августа 2017

Моя текущая версия с удаленными картами Bluetooth и беспроводной связи (запускается с powershell -file script.ps1):

# 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...