Powershell – Test-Connection y nuestro primer script

Seguimos con nuestra serie de powershell, en el presente post vamos a empezar a hablar de un cmdlet que nos servirá para algunas comprobaciones de red, hablamos de test-connection.

Lo primero que haremos será lo de siempre,  saber que podemos hacer y como funciona, HOLA get-help

Bueno, viene a hacer lo mismo que un ping, aunque en otro post indagaremos cosas más interesantes y otro cmdlet que nos permitirá hacer más cosas, hoy solo quiero que empecemos a realizar pequeñas automatizaciones.

Bien, tras leernos la ayuda, ya sabemos que hace el Test-connection vamos a probarlo un poco, en mi red lo probaremos contra el router, 192.168.1.1 veamos que pasa….

La sintaxis es muy sencilla, el resultado es el mismo tanto si ponemos la dirección ip directamente como si ponemos el parámetro -ComputerName 192.168.1.1 así que por pereza solo escribo la ip y a correr. Vemos en el resultado que nos aparece el Origen (Source), Destination (Destino) ….. Bytes enviados, etc. Los Bytes enviados se pueden modificar y la cantidad de “Pings” también , agregamos un par de opciones y veamos que ocurre…

Con el -count 1 le indicamos que solo mande un ping y con el -Buffersize 512 le indicamos el tamaño del ping (¿alguien se acuerda del ping de la muerte?).

Nota: Estas opciones son más que interesantes en redes de determinado tamaño o para diagnóstico de problemas, el  utilizar un ping con distintos tamaños puede ayudar a determinar y diagnosticar distintos tipos de errores en dispositivos de red, servidores, etc.  hay dejo esto.

PowerShell nos permite hacer cosas muy chulas desde línea de comandos, como esta:

En 2 líneas podemos cargar el archivo con el listado de ips y realizar el test-connection a cada equipo,  hoy quiero hacer algo relativamente sencillo y que nos facilite de un vistazo lo que necesitamos saber, digamos que queremos saber si hay conectividad con distintos equipos y/o dispositivos de red, veamos como podríamos hacer esto.

Para empezar, necesitaríamos tener un listado de ips de los equipos a monitorear… para ello creamos un fichero de texto que llamaremos en nuestro ejemplo list_servidores.txt con el siguiente contenido:

 192.168.1.1
 192.168.1.2
 192.168.1.3

Y en el mismo directorio crearemos nuestro primer script, lo llamaremos Ping-Servidores.ps1

Veamos que es lo que tenemos que hacer:
– Leer el contenido archivo list_servidores.txt
– Para cada elemento del paso anterior realizar un test-connection.
– Y si contesta correctamente o da error que nos muestre el resultado por pantalla.

Inicio del archivo:

# Leemos el archivo
 $listado = get-content .\list_servidores.txt

#Para cada ip del archivo
 ForEach ($ip in $listado) {
    if (test-connection -ComputerName $ip -Count 1 -Quiet) {
    # Si el test-connection es correcto
    write-host -BackgroundColor DarkGreen -ForegroundColor Black ('{0} - RESPONDE' -f $ip)
 } else {
    # Si el test-connection no es correcto
    Write-Host -BackgroundColor DarkRed -ForegroundColor White ('{0} - NO RESPONDE' -f $ip)
    }
 }

Como no se ve muy bien os pongo una imagen para que veáis como queda.

Bien tenemos un foreach al que le decimos que para cada elemento ($ip) que esta dentro de los valores de $listado realice un test-connection  y en “silencio” si el resultado es correcto nos escribirá en bonito verde la IP – RESPONDE y en caso contrario nos pondrá en rojo IP – NO RESPONDE….

El resultado visualmente es el siguiente:

Y con un poquito de lógica, y 13 líneas de código incluyendo comentarios, hemos conseguido nuestro objetivo, un script muy sencillo con un resultado aceptable y que nos ha servido para aprender un poco más de PowerShell.

PD: Mirad otro cmdlet interesante, del que también hablaré en otra ocasión Test-Netconnection.

Hasta el próximo post amigos….

Una respuesta a “Powershell – Test-Connection y nuestro primer script”

  1. Muy interesante la opción de autofirmar los guiones “script”
    POR LO PRONTO
    “set-executionpolicy remotesigned”
    (pruebas)
    “set-executionpolicy restricted”

    ¡GRACIAS POR COMPARTIR CONOCIMIENTOS!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *