Як визначити швидкість (швидкий або гігабітний Ethernet) мережевого з'єднання через командний рядок Windows


40

Щоб вирішити проблему з мережею, я хотів би дізнатися реальну швидкість мережі для даного мережного адаптера, що можна побачити при відкритті "стану" мережевого з'єднання під Windows: Установка швидкості

Однак я хочу дізнатися про це через командний рядок або за допомогою невеликого, окремого інструменту, оскільки мені потрібно запитати це для кількох мережевих з'єднань і не довіряти користувачеві належним чином отримувати інформацію. Налаштування мережевої картки "Швидкість / Duplux" - це завжди "Автоматичні переговори", тому я не можу сказати, яку "Швидкість" я отримаю.

Відповіді:


61

Спробуйте цей WMI-запит:

wmic NIC where NetEnabled=true get Name, Speed

Це має забезпечити швидкість усіх активних мережевих з'єднань.

Редагувати: як було зазначено, цей запит має бути змінено для роботи в PowerShell (він працює чудово в cmd.exe). Потім знову в PowerShell вам зовсім не потрібно використовувати WMI:

Get-NetAdapter | where Status -eq "Up" | select InterfaceDescription, LinkSpeed

Як бонус, це дає швидкість у приємному для людини читаному форматі (наприклад, "1 Гбіт / с"), а не кількість біт на секунду.


1
і якщо у вас є седмічний NIC, де NetEnabled = true отримайте ім'я, швидкість | sed -es / 000000000 / Гбіт / | sed -es / 000000 \ b / Мбіт /
Джеймі Кук

2
Цей WMI-запит працював у Windows 8 cmd, але в Windows 7 мені довелося використовувати це: wmic NIC, де "NetEnabled = 'true'" отримати "Name, Speed" Здається, що оболонка cmd намагалася інтерпретувати "," як пробіл або роздільник команд. У PowerShell також є ця проблема. Дякуємо, що поставили мене на правильний шлях!
Чувак

Тільки те, що мені було потрібно! Ви чудова людина; n; +1 (PS - це біт на секунду?)
Кардинальна система

1
@CardinalSystem Так, це біти на секунду.
Індрек

6

З відповіді Індрека:

wmic NIC, де NetEnabled = true отримати ім'я, швидкість

буде працювати в командному рядку. Для використання PowerShell:

wmic NIC where "NetEnabled='true'" get "Name,Speed"

(Стаття де та будь-який атрибут get (наприклад, Ім'я та Швидкість) повинні бути укладені у подвійні лапки і розділені комами).

// Редагувати №1: Ім'я виразу GET, Швидкість має бути укладено в один набір подвійних лапок. Отримати вирази можуть не мати проміжку між ними


Це дивно. Тут працює без лапок.
DavidPostill

@DavidPostill Він порушує вираз GET в PS (як тільки ви додасте другий елемент).
Луї

1
Ага. Підтверджено. Вам слід додати до своєї відповіді, що лапки потрібні для PowerShell і не потрібні в оболонці cmd.
DavidPostill

2

Я хотів би внести свій внесок у вашу частку. Якщо вам потрібно запустити sed в Windows, ви можете завантажити UnxUtils, а потім витягнути sed.exe в c: \ Windows \ System32

Потім, коли ви трубите з sed, як запропонували, це працює. (Windows 8.1)

Спасибі.

wmic NIC where NetEnabled=true get Name, Speed | sed -e s/000000000/Gbit/ | sed -e s/000000\b/Mbit/

\bне працює sedв Cygwin. Що для мене працює [^0]. Або для завершення:s/000000[^0]/Mbit/
pepoluan

За винятком того, що проковтне перший ненульовий символ після 000000, що може бути не тим, що ви хочете.
Водін

-1

Ви також можете використовувати:

cat /sys/class/net/enp6s0/speed

Або коли це eth0, щоб визначити швидкість зв'язку (100 або 1000):

cat /sys/class/net/eth0/speed


так чому відповідь не сприйнята.
Зелене дерево

1
Я не знаю, здається, тут все одно нуль: S. Ова мабі, тому що це лише Linux ..
Мелрой
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.