Cómo usar Test-NetConnection en PowerShell

¿Sabías que el comando ping, con sus 38 años, es más antiguo que el símbolo del sistema? Probablemente ya haya reemplazado el símbolo del sistema de su conjunto de herramientas diario con PowerShell.

Así que ahora es el momento de reemplazar el comando ping con Conexión de red de prueba de PowerShell.

La ventaja de ping es que es un comando muy corto de escribir, pero la desventaja es que solo prueba la conexión de redes a través de ICMP. No realiza ningún rastreo ni prueba de puerto.

La mayoría de las veces necesitamos combinar el comando ping con tracert y nslookup para obtener todos los detalles que necesitamos.

Test-NetConnection es el sucesor del cmdlet Test-Connection de PowerShell. Este último fue el primer paso para reemplazar el comando ping, con algunas ventajas.

Test-NetConnection es mucho más potente y debería ser su herramienta de referencia cuando se trata de solucionar problemas de red.

Conexión de prueba de PowerShell

Antes de echar un vistazo a cómo usar el Test-NetConnection cmdlet en PowerShell, primero echemos un vistazo rápido a Test-Connection.

Al igual que ping, utiliza Test-Connection también el protocolo ICMP para probar la conectividad de red de un dispositivo de red.

En la forma más simple, puede escribir Test-Connection <computername> o <ip-address> para hacer una prueba rápida de conectividad.

# Check connection on IP Address
Test-Connection 8.8.8.8

Source        Destination     IPV4Address      Bytes    Time(ms)
------        -----------     -----------      -------  ----
lab01         8.8.8.8         8.8.8.8          32       12
lab01         8.8.8.8         8.8.8.8          32       13
lab01         8.8.8.8         8.8.8.8          32       12
lab01         8.8.8.8         8.8.8.8          32       12

# Check connection on DNS Name
Test-Connection google.com

Pero, por supuesto, podemos mucho más. Por ejemplo, podemos probar varios destinos con un solo comando:

Test-Connection -ComputerName 8.8.8.8, 1.1.1.1
Conexión de prueba de PowerShell

O especifique parámetros como el número de saltos, el tamaño del búfer o incluso agregue un retraso entre los pings:

Test-Connection -ComputerName 8.8.8.8 -Count 3 -Delay 2 -MaxHops 255 -BufferSize 256

Probando una computadora remota

También podemos probar la conexión de red en PowerShell de un equipo remoto con Test-Connection. El único requisito es que su cuenta tenga acceso a la computadora remota.

Test-Connection -Source srv-lab02 -ComputerName 8.8.8.8

También puede escribir tnc en lugar de Test-Connecting.

Entonces puedes escribir: tnc 8.8.8.8 para hacer ping a Google, por ejemplo.

Conexión de prueba de PowerShell al servidor

Otra característica útil de PowerShell Test-Connection es que puede devolver $true o $false.

Esto le permite verificar si una computadora está disponible antes de conectarse a ella. Test-Connect devolverá $true si alguno de los 4 ping tiene éxito.

if (Test-Connection -TargetName srv-lab02 -Quiet) { New-PSSession -ComputerName srv-lab02}

Conexión de red de prueba de PowerShell

los Test-NetConnection cmdlet es el sucesor de Test-Connection, por lo que las funciones básicas son todas iguales, solo que la salida es más detallada. Todavía podemos hacer un ping rápido a Google:

# Test the network connection to Google
Test-NetConnection 8.8.8.8

ComputerName           : 8.8.8.8
RemoteAddress          : 8.8.8.8
InterfaceAlias         : Wi-Fi
SourceAddress          : 192.168.1.82
PingSucceeded          : True
PingReplyDetails (RTT) : 9 ms

Como puede ver, los resultados son más detallados. Le mostrará la interfaz que se utiliza, su dirección IP de origen y si el ping tuvo éxito. Incluso podemos expandir esto agregando el informationLevel "Detailed" cambiar.

Con el informationLevel configurado en detallado, básicamente hará un nslookup en la dirección de destino y agregará el primer salto en la búsqueda.

test-netconnection Google.com -InformationLevel "Detailed"                                                                                                                                                                                                                                                                                                            ComputerName           : Google.com                                                                                     RemoteAddress          : 172.217.17.78                                                                                  NameResolutionResults  : 172.217.17.78                                                                                  InterfaceAlias         : Wi-Fi                                                                                          SourceAddress          : 192.168.1.82                                                                                   NetRoute (NextHop)     : 192.168.1.1                                                                                    PingSucceeded          : True                                                                                           PingReplyDetails (RTT) : 6 ms
conexión de red de prueba

Puede realizar una prueba rápida de conexión de red en PowerShell cuando ejecuta Test-NetConnection sin ningún parámetro. De esta forma podemos comprobar si estamos conectados a la red local, tenemos acceso a Internet y somos capaces de resolver nombres DNS.

❯ Test-NetConnection

ComputerName           : internetbeacon.msedge.net
RemoteAddress          : 13.107.4.52
InterfaceAlias         : Wi-Fi
SourceAddress          : 192.168.1.82
PingSucceeded          : True
PingReplyDetails (RTT) : 10 ms

PowerShell TraceRoute con Test-NetConnection

Con el cmdlet Test-NetConnection en PowerShell también podemos hacer un trazar ruta. Solo necesitas agregar el traceroute parámetro al cmdlet.

# PowerShell TraceRoute with Test-NetConnection
Test-NetConnection 172.217.17.87 -traceRoute
Ruta de seguimiento de PowerShell

Con el parámetro Traceroute agregado al cmdlet Test-NetConnection de PowerShell, obtendrá una lista de cada salto que se pasa durante el ping.

Puede limitar la cantidad de lúpulo para rastrear con el hops parámetro.

Para probar la latencia de cada salto, puede seleccionar el objeto TraceRoute y probar la conexión de cada salto:

Test-NetConnection 172.217.17.78 -traceRoute -Hops 3 | select-object TraceRoute | foreach-object {test-connection $_.TraceRoute -count 1}

Escaneo de puertos Powershell

En Windows, realmente no podemos hacer ping a un puerto con el cmdlet de ping. Podríamos usar telnet para probar si un puerto responde, pero con Test-NetConnection podemos escanear un puerto en PowerShell mucho más fácilmente.

Podemos definir cualquier puerto TCP que queramos probar, o usar uno de los puertos comunes HTTP, RDP, SMB o WINRM.

# Test if HTTP port is open
Test-NetConnection google.com -CommonTCPPort "Http"

# Or define a port number
Test-NetConnection google.com -Port 80

Con esto, podemos crear un script simple de escaneo de puertos de PowerShell que puede verificar los puertos abiertos en un servidor. El siguiente script es para darle una idea de cómo puede escanear múltiples puertos con PowerShell.

$ports = 22,53,80,445

$ports | ForEach-Object {$port = $_; if (Test-NetConnection -ComputerName 8.8.8.8 -Port $port -InformationLevel Quiet -WarningAction SilentlyContinue) {"Port $port is open" } else {"Port $port is closed"} }

Terminando

Como ha visto, PowerShell Test-NetConnection es un cmdlet realmente poderoso y útil para usar en su trabajo diario.

Al comienzo del artículo, mencioné que ping es más corto de escribir. Puede resolver eso creando un alias en su perfil de PowerShell o usar el alias incorporado tnc.

# Create an alias "nettest" or maybe just "tn"
Set-Alias nettest Test-NetConnection

De esta manera, simplemente puede escribir «nettest» en lugar de Test-NetConnection.

Obtenga más información sobre cómo configurar su perfil de PowerShell en este artículo.

Si tiene alguna pregunta, simplemente deje un comentario a continuación.

Otros artículos relacionados

Explicación de Set-ADUser: cómo modificar usuarios de AD con PowerShell

Explicación de Set-ADUser: cómo modificar usuarios de AD con PowerShell

¿Necesita actualizar varios usuarios en su Active Directory? ¿O busca una forma más eficiente de modificar las propiedades de los ...
Leer Más
Cómo usar Import-CSV en PowerShell

Cómo usar Import-CSV en PowerShell

Cuando trabajamos con PowerShell, podemos usar archivos CSV para importar datos a los sistemas o usarlos como una lista de ...
Leer Más
Cómo usar Get-ADGroup en PowerShell

Cómo usar Get-ADGroup en PowerShell

¿Necesita obtener todos los grupos en su Active Directory o simplemente necesita encontrar la ubicación del grupo que se esconde ...
Leer Más
La solución a las Plantillas de Microsoft Planner que faltan

La solución a las Plantillas de Microsoft Planner que faltan

Una de las funciones más solicitadas en el foro de UserVoice para Microsoft Planner es la capacidad de crear plantillas ...
Leer Más
PowerShell For Loop, ForEach y Do While/Hasta que se explique

PowerShell For Loop, ForEach y Do While/Hasta que se explique

Una de las funciones más fundamentales en la programación además de "If, Else" son los bucles. Le permiten procesar datos ...
Leer Más
Cómo utilizar Select-String equivalente a PowerShell Grep

Cómo utilizar Select-String equivalente a PowerShell Grep

Cuando necesite buscar a través de una cadena o archivos de registro en Linux, podemos usar el grep dominio. Para ...
Leer Más

Deja un comentario