Come rilevare la velocità (Ethernet veloce o gigabit) di una connessione di rete tramite la riga di comando di Windows


40

Per risolvere un problema di rete, vorrei verificare la "velocità" della rete reale per una determinata scheda di rete, che può essere visualizzata quando si apre lo "stato" di una connessione di rete in Windows: Impostazione della velocità

Tuttavia, voglio indagare sulla riga di comando o con un piccolo strumento separato perché devo richiederlo per più connessioni di rete e non mi fido che l'utente possa recuperare correttamente le informazioni. L'impostazione "Velocità / Duplux" della scheda di rete è sempre "Negoziazione automatica", quindi non posso dire da quale "Velocità" otterrò.

Risposte:


61

Prova questa query WMI:

wmic NIC where NetEnabled=true get Name, Speed

Questo dovrebbe darti la velocità di tutte le connessioni di rete attive.

Modifica: come è stato sottolineato, questa query deve essere modificata per funzionare in PowerShell (funziona bene anche in cmd.exe). Inoltre, in PowerShell non è necessario utilizzare WMI:

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

Come bonus, questo dà la velocità in un formato piacevole, leggibile dall'uomo (ad esempio "1 Gbps"), piuttosto che il numero di bit al secondo.


1
e se si dispone di una scheda di rete sed wmic in cui NetEnabled = true ottiene Nome, Velocità | sed -es / 000000000 / Gbit / | sed -es / 000000 \ b / Mbit /
Jamie Cook

2
Quella query WMI ha funzionato in Windows 8 cmd, ma in Windows 7, ho dovuto usare questo: WIC NIC dove "NetEnabled = 'true'" get "Name, Speed" Sembra che la shell cmd stesse cercando di interpretare ',' come spazio o comando separatore. PowerShell ha anche questo problema. Grazie per avermi messo sulla strada giusta!
The Dude,

Proprio quello di cui avevo bisogno! Sei una grande persona; n; +1 (PS è quel bit per secondo?)
Sistema cardinale

1
@CardinalSystem Sì, sono bit al secondo.
Indrek,

6

Dalla risposta di Indrek:

NIC wmic dove NetEnabled = true ottiene Nome, Velocità

funzionerà nel prompt dei comandi. Per PowerShell usare:

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

(Il dove clausola e ogni ottenere attributi (come nome e Speed), deve essere racchiuso tra virgolette doppie e delimitato da virgole).

// Modifica n. 1: OTTIENI l'espressione Nome, La velocità deve essere racchiusa in un singolo set di virgolette doppie. Ottieni espressioni potrebbe non avere uno spazio tra di loro


È strano. Funziona senza virgolette qui.
DavidPostill

@DavidPostill Rompe l'espressione GET in PS (una volta aggiunto un secondo elemento).
Louis,

1
Ah. Confermato. È necessario aggiungere alla risposta che le virgolette sono richieste per PowerShell e non necessarie in una shell cmd.
David Post

2

Vorrei contribuire alla tua condivisione. Se devi eseguire sed in Windows, puoi scaricare UnxUtils, quindi estrarre sed.exe in c: \ Windows \ System32

Quindi, quando fai pipa con sed come hai suggerito, funziona. (Windows 8.1)

Grazie.

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

\bnon funziona con sedCygwin. Ciò che funziona per me è [^0]. O, per essere completo:s/000000[^0]/Mbit/
pepoluan

Tranne che inghiottirà il primo carattere diverso da zero dopo 000000, che potrebbe non essere quello che vuoi.
Wodin,

-1

Puoi anche usare:

cat /sys/class/net/enp6s0/speed

O quando è eth0, per determinare la velocità di connessione (100 o 1000):

cat /sys/class/net/eth0/speed


allora perché la risposta è sottoposta a downgrade.
Green Tree,

1
Non lo so, sembra ancora zero qui: S. Ow mabye perché questo è solo Linux ..
Melroy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.