Probar una conexión en PowerShell con Test-NetConnection

Contenido

En este tutorial, os voy a hablar del cmdlet de PowerShell Test-NetConnection, que os permitirá ejecutar diagnósticos de red.

Este comando puede sustituir a las siguientes herramientas:

  • Ping
  • Telnet
  • Traceroute (tracert)

¡Con un solo cmdlet de PowerShell podrás hacerlo todo!

En este tutorial, esto es lo que vamos a ver:

  • Cómo hacer un ping en PowerShell
  • ¿Cómo se ejecuta un «telnet» en PowerShell para comprobar un puerto (TCP)?
  • Cómo trazar una ruta en PowerShell

Antes de empezar, el cmdlet Test-NetConnection admite un primer parámetro, -ComputerName, que no es obligatorio especificar.

Hacer un ping en PowerShell con Test-NetConnection

Vamos a empezar con un uso sencillo, que consistirá en hacer un ping.

Test-NetConnection google.fr

Como se puede ver en la captura de pantalla, el comando no nos devuelve ninguna información:

  • La dirección IP remota se resuelve al comprobar un nombre de dominio
  • La interfaz y la dirección IP de origen
  • El resultado del ping
  • El tiempo de latencia

Ahora bien, lo interesante de PowerShell es que nos permite crear scripts; para ilustrarlo, veamos un script sencillo que nos permite probar un ping.

<#
	Script for TEST Connection
#>

param(
	$RemoteHost = "google.fr"
)

$ResultTest = Test-NetConnection -ComputerName $RemoteHost


if( $ResultTest.PingSucceeded ){
	Write-Output "Test OK for $RemoteHost"
}else{

	Write-Output "/!\ Test KO for $RemoteHost"
}

Para obtener el resultado del comando, hay que comprobar si PingSucceeded es verdadero.

Aquí tienes el script y el resultado del mismo con un host que responde y otro que no.

Si quieres realizar varios pings o un ping continuo, debes utilizar el cmdlet Test-Connection.

Para realizar 100 pings

Test-Connection google.fr -Count 100

Para un ping continuo:

Test-Connection google.fr -Count ([int32]::MaxValue)

Comprobar un puerto en PowerShell con Test-NetConnection

Ahora vamos a ver cómo comprobar un puerto en PowerShell, tal y como se haría con telnet .

La ventaja de utilizar Test-NetConnection en lugar de telnet es que no es necesario instalar el cliente de Telnet.

Para probar un puerto, hay que añadir el parámetro -Port y el número del mismo.

Lo que nos da:

Test-NetConnection rdr-it.com -Port 443

En este caso, he probado el puerto 443 (HTTPS) del servidor del sitio web; para conocer el resultado de la prueba, hay que fijarse en el valor de TcpTestSucceeded.

En caso de fallo, el cmdlet comprobará el estado del host mediante un ping.

También se puede aprovechar esta respuesta en un script de PowerShell; a diferencia del comando «ping», hay que analizar el resultado de TcpTestSucceeded.

Probar la ruta con Test-NetConnection

Para terminar este tutorial, vamos a ver cómo comprobar el enrutamiento con Test-NetConnection en PowerShell.

Si tienes que configurar varias rutas diferentes, el primer parámetro que puedes utilizar es -DiagnoseRouting, que analizará qué ruta (puerta de enlace) se va a utilizar para acceder al servidor remoto.

El segundo parámetro que vamos a ver es traceroute, que permite obtener el equivalente a un tracert y ver todos los routers que se utilizan.


Ahora ya sabes cómo realizar diferentes pruebas de red con PowerShell utilizando el cmdlet Test-NetConnection.

Romain Drouche

Romain Drouche

Arquitecto de sistemas | MCSE: Core Infrastructure

Experto en infraestructuras de TI con más de 15 años de experiencia sobre el terreno. Actualmente, como jefe de proyectos de sistemas y redes y referente en seguridad de los sistemas de información (SSI), pongo mi experiencia al servicio de la fiabilidad y la seguridad de los entornos tecnológicos.

GHinM▶