Cómo detectar la velocidad (rápida o gigabit ethernet) de una conexión de red a través de la línea de comandos de Windows


40

Para solucionar un problema de red, me gustaría consultar la "velocidad" real de la red para un adaptador de red determinado, que se puede ver al abrir el "estado" de una conexión de red en Windows: Ajuste de velocidad

Sin embargo, quiero preguntar esto a través de la línea de comandos o con una herramienta pequeña y separada porque necesito solicitar esto para múltiples conexiones de red y no confío en que el usuario obtenga la información correctamente. La configuración de "Velocidad / Duplux" de la tarjeta de red siempre es "Negociación automática", por lo que no puedo decir a partir de eso qué "Velocidad" obtendré.

Respuestas:


61

Pruebe esta consulta WMI:

wmic NIC where NetEnabled=true get Name, Speed

Eso debería darle la velocidad de todas las conexiones de red activas.

Editar: como se ha señalado, esta consulta debe modificarse para que funcione en PowerShell (aunque funciona bien en cmd.exe). Por otra parte, en PowerShell no necesita usar WMI en absoluto:

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

Como beneficio adicional, esto proporciona la velocidad en un formato agradable y legible para humanos (por ejemplo, "1 Gbps"), en lugar de la cantidad de bits por segundo.


1
y si tiene NIC wmic sed donde NetEnabled = true obtener Nombre, Velocidad | sed -es / 000000000 / Gbit / | sed -es / 000000 \ b / Mbit /
Jamie Cook

2
Esa consulta WMI funcionó en Windows 8 cmd, pero en Windows 7, tuve que usar esto: wmic NIC donde "NetEnabled = 'true'" get "Name, Speed" Parece que el shell cmd estaba tratando de interpretar el ',' como un espacio o separador de comandos. PowerShell también tiene este problema. ¡Gracias por ponerme en el camino correcto!
The Dude

¡Justo lo que necesitaba! Eres una gran persona, n; +1 (¿PS es eso bits por segundo?)
Cardinal System

1
@CardinalSystem Sí, son bits por segundo.
Indrek

6

De la respuesta de Indrek:

NIC wmic donde NetEnabled = true obtener Nombre, Velocidad

funcionará en el símbolo del sistema. Para uso de PowerShell:

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

(La cláusula where y cualquier atributo get (como Name y Speed) deben ir entre comillas dobles y delimitados por comas).

// Editar # 1: OBTENER el nombre de la expresión, la velocidad debe estar encerrada dentro de un solo conjunto de comillas dobles. Obtener expresiones puede no tener un espacio entre ellas


Eso es extraño. Funciona sin las comillas aquí.
DavidPostill

@DavidPostill Rompe la expresión GET en PS (una vez que agrega un segundo elemento).
Louis

1
Ah Confirmado. Debe agregar a su respuesta que las comillas son necesarias para PowerShell y no son necesarias en un shell de cmd.
DavidPostill

2

Me gustaría contribuir a su parte. Si necesita ejecutar sed en Windows, puede descargar UnxUtils y luego extraer sed.exe en c: \ Windows \ System32

Luego, cuando canalizas con sed como sugeriste, funciona. (Windows 8.1)

Gracias.

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

\bno funciona con seden Cygwin. Lo que funciona para mí es [^0]. O, para completar:s/000000[^0]/Mbit/
pepoluan

Excepto que se tragará el primer carácter distinto de cero después de 000000, que podría no ser lo que desea.
Wodin

-1

También puedes usar:

cat /sys/class/net/enp6s0/speed

O cuando es eth0, para determinar su conexión de velocidad (100 o 1000):

cat /sys/class/net/eth0/speed


Entonces, ¿por qué se rechaza la respuesta?
Green Tree

1
No sé, todavía parece cero aquí: S. Ow mabye porque esto es solo Linux ..
Melroy
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.