Ermitteln der Geschwindigkeit (schnelles oder Gigabit-Ethernet) einer Netzwerkverbindung über die Windows-Befehlszeile

40

Zur Behebung eines Netzwerkproblems möchte ich die tatsächliche Netzwerkgeschwindigkeit für einen bestimmten Netzwerkadapter erfragen, die beim Öffnen des Status einer Netzwerkverbindung unter Windows angezeigt wird: Geschwindigkeitseinstellung

Ich möchte dies jedoch über die Befehlszeile oder mit einem kleinen, separaten Tool abfragen, da ich dies für mehrere Netzwerkverbindungen anfordern muss und dem Benutzer nicht vertraue, die Informationen ordnungsgemäß abzurufen. Die Netzwerkkarteneinstellung "Geschwindigkeit / Duplux" ist immer "Auto Negotiate", daher kann ich nicht sagen, welche "Geschwindigkeit" ich erhalten werde.

asdrubael
quelle

Antworten:

61

Versuchen Sie diese WMI-Abfrage:

wmic NIC where NetEnabled=true get Name, Speed

Das sollte Ihnen die Geschwindigkeit aller aktiven Netzwerkverbindungen geben.

Bearbeiten: Wie bereits erwähnt, muss diese Abfrage geändert werden, damit sie in PowerShell funktioniert (in cmd.exe funktioniert sie jedoch einwandfrei). Andererseits müssen Sie in PowerShell überhaupt kein WMI verwenden:

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

Als Bonus erhalten Sie die Geschwindigkeit in einem für Menschen lesbaren Format (z. B. "1 Gbit / s") und nicht die Anzahl der Bits pro Sekunde.

Indrek
quelle
1
und wenn Sie wmic NIC mit NetEnabled = true gesetzt haben, erhalten Sie Name, Geschwindigkeit | sed -es / 000000000 / Gbit / | sed -es / 000000 \ b / Mbit /
Jamie Cook
2
Diese WMI-Abfrage funktionierte in Windows 8 cmd, aber in Windows 7 musste ich Folgendes verwenden: wmic NIC, wobei "NetEnabled =" true "" Name, Geschwindigkeit "abruft. Es scheint, dass die cmd-Shell versucht hat, das", "zu interpretieren. als Leerzeichen oder Befehlstrennzeichen. PowerShell hat auch dieses Problem. Danke, dass du mich auf den richtigen Weg gebracht hast!
Der
Genau das, was ich brauchte! Du bist eine großartige Person; n; +1 (PS ist das Bits pro Sekunde?)
Kardinalsystem
1
@CardinalSystem Ja, es sind Bits pro Sekunde.
Indrek
6

Aus Indreks Antwort:

WMIC-NIC, wobei NetEnabled = true Name, Geschwindigkeit abrufen

wird in der Eingabeaufforderung funktionieren. Für PowerShell verwenden Sie:

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

(Die where- Klausel und alle get- Attribute (wie Name und Geschwindigkeit) müssen in doppelte Anführungszeichen und durch Kommas getrennt sein.)

// Edit # 1: GET Ausdruck Name, Geschwindigkeit muss in einfache Anführungszeichen gesetzt werden. Get-Ausdrücke dürfen kein Leerzeichen enthalten

Tom
quelle
Das ist merkwürdig. Es funktioniert ohne die Anführungszeichen hier.
DavidPostill
@DavidPostill Unterbricht den GET-Ausdruck in PS (sobald Sie ein zweites Element hinzufügen).
Louis
1
Ah. Bestätigt. Sie sollten Ihrer Antwort hinzufügen, dass die Anführungszeichen für PowerShell erforderlich und in einer Cmd-Shell nicht erforderlich sind.
DavidPostill
2

Ich möchte zu Ihrem Anteil beitragen. Wenn Sie sed unter Windows ausführen müssen, können Sie UnxUtils herunterladen und sed.exe in c: \ Windows \ System32 extrahieren

Wenn Sie dann mit sed pfeifen, wie Sie es vorgeschlagen haben, funktioniert es. (Windows 8.1)

Vielen Dank.

wmic NIC where NetEnabled=true get Name, Speed | sed -e s/000000000/Gbit/ | sed -e s/000000\b/Mbit/
sdkks
quelle
\bfunktioniert nicht mit sedin Cygwin. Was für mich funktioniert, ist [^0]. Oder, um vollständig zu sein:s/000000[^0]/Mbit/
pepoluan
Mit der Ausnahme, dass das erste Zeichen ungleich Null nach 000000 verschluckt wird, was möglicherweise nicht das ist, was Sie wollen.
Wodin
-1

Sie können auch verwenden:

cat /sys/class/net/enp6s0/speed

Oder wenn es eth0 ist, um Ihre Geschwindigkeitsverbindung zu bestimmen (100 oder 1000):

cat /sys/class/net/eth0/speed

Melroy
quelle
Warum wird die Antwort herabgestimmt?
Green Tree
1
Ich weiß nicht, hier scheint es immer noch null zu sein: S. Ow mabye, weil dies nur Linux ist ..
Melroy