Comment détecter la vitesse (Ethernet rapide ou gigabit) d'une connexion réseau via la ligne de commande Windows

40

Pour résoudre un problème de réseau, j'aimerais connaître la "vitesse" réelle du réseau pour une carte réseau donnée, ce qui est visible lors de l'ouverture du "statut" d'une connexion réseau sous Windows: Réglage de la vitesse

Cependant, je souhaite me renseigner sur la ligne de commande ou avec un petit outil séparé, car je dois le demander pour plusieurs connexions réseau et je ne fais pas confiance à l'utilisateur pour qu'il récupère correctement les informations. Le paramètre "Speed ​​/ Duplux" de la carte réseau est toujours "Auto Negotiate" (Négociation automatique), je ne peux donc pas en déduire quelle "vitesse" j'aurai.

Asdrubael
la source

Réponses:

61

Essayez cette requête WMI:

wmic NIC where NetEnabled=true get Name, Speed

Cela devrait vous donner la vitesse de toutes les connexions réseau actives.

Edit: comme cela a été souligné, cette requête doit être modifiée pour fonctionner dans PowerShell (elle fonctionne cependant très bien dans cmd.exe). Là encore, dans PowerShell, vous n'avez pas du tout besoin d'utiliser WMI:

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

En prime, cela donne la vitesse dans un joli format lisible par l'homme (par exemple, "1 Gbps"), plutôt que le nombre de bits par seconde.

Indrek
la source
1
et si vous avez la carte réseau sed wmic où NetEnabled = true obtient le nom, la vitesse | sed -es / 000000000 / Gbit / | sed -es / 000000 \ b / Mbit /
Jamie Cook
2
Cette requête WMI fonctionnait dans Windows 8 cmd, mais dans Windows 7, je devais utiliser ceci: NIC wmic où "NetEnabled = 'true'" get "Name, Speed" Il semble que le shell cmd essaye d'interpréter le ',' comme séparateur d'espace ou de commande. PowerShell a également ce problème. Merci de m'avoir mis sur le bon chemin!
Le Mec
Juste ce dont j'avais besoin! Tu es une grande personne; n; +1 (PS est que bits par seconde?)
Cardinal System
1
@CardinalSystem Oui, c'est en bits par seconde.
Indrek le
6

De la réponse d'Indrek:

wmic NIC où NetEnabled = true obtient le nom, la vitesse

fonctionnera dans l'invite de commande. Pour l'utilisation de PowerShell:

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

(La clause where et tout attribut get (comme Name et Speed) doivent être placés entre guillemets et séparés par des virgules).

// Edit # 1: GET expression Name, Speed ​​doit être placé dans un seul jeu de guillemets doubles. Les expressions Get ne peuvent pas être séparées par un espace

À M
la source
C'est étrange. Cela fonctionne sans les guillemets ici.
DavidPostill
@DavidPostill Il rompt l'expression GET dans PS (une fois que vous avez ajouté un deuxième élément).
Louis
1
Ah Confirmé. Vous devez ajouter à votre réponse que les guillemets sont obligatoires pour PowerShell et non requis dans un shell cmd.
DavidPostill
2

Je voudrais contribuer à votre part. Si vous devez exécuter sed dans Windows, vous pouvez télécharger UnxUtils, puis extraire sed.exe dans c: \ Windows \ System32.

Ensuite, lorsque vous jouez avec sed comme vous l’avez suggéré, cela fonctionne. (Windows 8.1)

Merci.

wmic NIC where NetEnabled=true get Name, Speed | sed -e s/000000000/Gbit/ | sed -e s/000000\b/Mbit/
sdkks
la source
\bne fonctionne pas avec sedCygwin. Ce qui fonctionne pour moi est [^0]. Ou, pour être complet:s/000000[^0]/Mbit/
pepoluan
Sauf que cela avalera le premier caractère différent de zéro après 000000, ce qui pourrait ne pas être ce que vous voulez.
Wodin
-1

Vous pouvez aussi utiliser:

cat /sys/class/net/enp6s0/speed

Ou quand c'est eth0, pour déterminer votre connexion rapide (100 ou 1000):

cat /sys/class/net/eth0/speed

Melroy
la source
alors pourquoi la réponse est-elle rejetée?
Green Tree
1
Je ne sais pas, il semble toujours zéro ici: S. Ow mabye parce que c'est seulement Linux ..
Melroy