Jak wykryć prędkość (szybki lub gigabitowy Ethernet) połączenia sieciowego przez linię poleceń Windows


40

Aby rozwiązać problem z siecią, chciałbym zapytać o rzeczywistą „prędkość” sieci dla danej karty sieciowej, którą można zobaczyć po otwarciu „statusu” połączenia sieciowego w systemie Windows: Ustawienie prędkości

Jednak chcę o to zapytać za pomocą wiersza polecenia lub małego, oddzielnego narzędzia, ponieważ muszę poprosić o to dla wielu połączeń sieciowych i nie ufam użytkownikowi, że poprawnie pobierze informacje. Ustawienie karty „Speed ​​/ Duplux” karty sieciowej to zawsze „Auto Negotiate”, więc nie mogę z tego stwierdzić, jaką „Speed” dostanę.

Odpowiedzi:


61

Spróbuj tego zapytania WMI:

wmic NIC where NetEnabled=true get Name, Speed

To powinno dać Ci szybkość wszystkich aktywnych połączeń sieciowych.

Edycja: jak wskazano, to zapytanie musi zostać zmodyfikowane, aby działało w PowerShell (działa jednak dobrze w cmd.exe). Z drugiej strony, w PowerShell nie musisz wcale używać WMI:

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

Jako bonus daje to szybkość w ładnym, czytelnym dla człowieka formacie (np. „1 Gbps”), a nie liczbę bitów na sekundę.


1
a jeśli masz sed wmic NIC, gdzie NetEnabled = true, pobierz nazwę, prędkość | sed -es / 000000000 / Gbit / | sed -es / 000000 \ b / Mbit /
Jamie Cook

2
To zapytanie WMI działało w Windows 8 cmd, ale w Windows 7 musiałem użyć tego: wmic NIC gdzie „NetEnabled =„ true ”„ get ”Name, Speed” Wygląda na to, że powłoka cmd próbowała zinterpretować „,” jako separator spacji lub poleceń. PowerShell ma również ten problem. Dzięki, że postawiłeś mnie na właściwej drodze!
Koleś

Dokładnie to, czego potrzebowałem! Jesteś wspaniałą osobą; n; +1 (PS czy to bitów na sekundę?)
Kardynał System

1
@CardinalSystem Tak, to bity na sekundę.
Indrek

6

Z odpowiedzi Indreka:

wmic NIC gdzie NetEnabled = true get Nazwa, prędkość

będzie działać w wierszu polecenia. W przypadku programu PowerShell:

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

( Klauzula where i wszelkie atrybuty get (takie jak Name i Speed) muszą być ujęte w podwójny cudzysłów i oddzielone przecinkami).

// Edycja nr 1: GET wyrażenie Nazwa, prędkość musi być zawarta w jednym zestawie podwójnych cudzysłowów. Uzyskaj wyrażenia mogą nie mieć spacji między nimi


To jest dziwne. Działa bez cytatów tutaj.
DavidPostill

@DavidPostill Łamie wyrażenie GET w PS (po dodaniu drugiego elementu).
Louis,

1
Ach Zatwardziały. Powinieneś dodać do swojej odpowiedzi, że cytaty są wymagane dla PowerShell i nie są potrzebne w powłoce cmd.
DavidPostill

2

Chciałbym przyczynić się do twojego udziału. Jeśli chcesz uruchomić sed w systemie Windows, możesz pobrać UnxUtils, a następnie wyodrębnić sed.exe do c: \ Windows \ System32

Następnie, gdy używasz seda zgodnie z sugestią, działa. (Windows 8.1)

Dzięki.

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

\bnie działa sedw Cygwin. Dla mnie działa [^0]. Lub, aby być kompletnym:s/000000[^0]/Mbit/
pepoluan

Tyle że połknie pierwszy niezerowy znak po 000000, co może nie być tym, czego chcesz.
Wodin 28.04.16

-1

Możesz także użyć:

cat /sys/class/net/enp6s0/speed

Lub gdy jest to eth0, aby określić prędkość połączenia (100 lub 1000):

cat /sys/class/net/eth0/speed


więc dlaczego odpowiedź została odrzucona?
Green Tree

1
Nie wiem, wydaje się, że tutaj wciąż jest zero: S. Ow mabye, ponieważ jest to tylko Linux ..
Melroy
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.