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.
