Как определить скорость (быстрый или гигабитный Ethernet) сетевого подключения через командную строку Windows


40

Чтобы устранить проблему с сетью, я бы хотел узнать реальную «скорость» сети для данного сетевого адаптера, которую можно увидеть при открытии «состояния» сетевого подключения под Windows: Установка скорости

Однако я хочу запросить это через командную строку или с помощью небольшого отдельного инструмента, потому что мне нужно запросить это для нескольких сетевых подключений, и я не доверяю пользователю для получения информации должным образом. Параметр «Скорость / Дуплекс» для сетевой карты всегда имеет значение «Автосогласование», поэтому я не могу сказать, какую «скорость» я получу.

Ответы:


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
и если у вас есть сетевой wmic, где NetEnabled = true, получите Name, Speed ​​| sed -es / 000000000 / Гбит / | sed -es / 000000 \ b / Mbit /
Джейми Кук

2
Этот запрос WMI работал в Windows 8 cmd, но в Windows 7 мне пришлось использовать это: wmic NIC, где "NetEnabled = 'true" "get" Name, Speed ​​"Кажется, что оболочка cmd пыталась интерпретировать', ' в качестве разделителя пробела или команды. PowerShell также имеет эту проблему. Спасибо, что поставили меня на правильный путь!
Чувак

Как раз то, что мне было нужно! Вы великий человек; n; +1 (PS это что бит в секунду?)
кардинальная система

1
@CardinalSystem Да, это бит в секунду.
Индрек

6

Из ответа Индрека:

wmic NIC, где NetEnabled = true получить имя, скорость

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

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

(Предложение where и любой атрибут get (например, Name и Speed) должны быть заключены в двойные кавычки и разделены запятыми).

// Редактировать # 1: ПОЛУЧИТЬ имя выражения, скорость должна быть заключена в один набор двойных кавычек. Получить выражения может не иметь пробела между ними


Это странно. Это работает без кавычек здесь.
ДэвидПостилл

@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.