3 cosas increíbles que puedes hacer con Windows Scripting

  • Harry James
  • 0
  • 1192
  • 18
Anuncio

Ya sea que trabaje en el campo de TI, como diseñador web o si solo es un estudiante o un empleado de oficina habitual, Windows Scripting tiene algo que ofrecerle. Por supuesto, Applescript Cómo usar las secuencias de comandos UI de Applescript en Mac Cómo usar las secuencias de comandos UI de Applescript en Mac también, pero mi enfoque en este caso es Windows. Cuando me refiero a Windows Scripting, me refiero a archivos de texto llenos de código que se guardan como archivos .wsf, que Windows puede compilar y ejecutar sobre la marcha..

Hace casi un año, escribí una introducción a Windows Scripting Better Than Batch: un tutorial de Windows Scripting Host Better Than Batch: un tutorial de Windows Scripting Host que mostraba cuán más poderoso puede ser un script .wsf que los trabajos por lotes de estilo más antiguo que Los profesionales de TI han estado escribiendo y ejecutando durante años. WSF le brinda el poder de un lenguaje estructurado como Visual Basic. Por defecto, puede crear un archivo VBScript o JScript WSF en Windows y se ejecutará bien.

Más allá de ese artículo introductorio, hoy quería ofrecer tres herramientas típicas que las personas usan a menudo tanto en un entorno de TI profesional como en el hogar. Esas tres herramientas incluyen leer la entrada de un archivo de texto, hacer ping a varios dispositivos en su red y enviar correos electrónicos a través de un script.

El poder de las secuencias de comandos de Windows

Lo que aprenderá cada uno de estos componentes más pequeños es permitirle combinarlos en un script automatizado más grande. Voy a pasar por pequeñas muestras de script que puedes juntar en un script automatizado muy bueno. Lo que hará ese script es tomar una lista de IP de entrada de un archivo de texto, hacer ping a cada uno de esos dispositivos y luego enviar un correo electrónico de alerta si alguno de esos dispositivos está inactivo.

Lectura de archivos de entrada

El primer paso en este proceso es aprender a leer y procesar información de un archivo de texto de entrada. En este caso, he creado un archivo de texto llamado IPlist.ini que reside en el mismo directorio que el script. Este archivo contiene una lista de todas las direcciones IP que quiero verificar. Puede leer en cada línea de un archivo de texto usando el siguiente script.

  Opción explícita en error Reanudar siguiente
Dim strHost Dim strCommand Dim ReturnCode Dim strLine Dim oFSO, sFile, oFile, sText
Establecer Shell = wscript.createObject ("wscript.shell") Establecer oFSO = CreateObject ("Scripting.FileSystemObject") sFile = "c: \ users \ owner \ scripts \ IPlist.ini" Si oFSO.FileExists (sFile) Luego establezca oFile = oFSO.OpenTextFile (sFile, 1) No hacer oFile.AtEndOfStream sText = oFile.ReadLine If Trim (sText) - Entonces strCommand = sText wscript.echo "La dirección IP es:" & sText End If Loop oFile.Close
Else WScript.Echo "El archivo no estaba allí". Finalizar si WScript.Quit  

Lo que hace este código es usar el objeto del sistema de archivos de Windows para abrir un archivo y luego lee una línea de texto a la vez hasta que llega al final del archivo.

Hacer ping a un host

Ahora que sabe cómo leer cada dirección IP del archivo de texto, ¿cómo realiza un Ping dentro de Windows Scripting??

Hacer ping es un poco más complicado que leer en un archivo de texto, ya que tienes que usar las secuencias de comandos de Instrumental de administración de Windows (WMI). Así es como se ve.

  Opción explícita en error Reanudar siguiente
Dim colPingResults, objPingResult, strQuery Dim strIPtext strIPtext = "192.168.1.105"
'WMI query strQuery = "SELECT * FROM Win32_PingStatus WHERE Address ='" & strIPtext & "'"
Establezca colPingResults = GetObject ("winmgmts: //./root/cimv2") .ExecQuery (strQuery)
'Traducir resultados de la consulta
Para cada objPingResult En colPingResults Si no es IsObject (objPingResult) Entonces Ping = False wscript.echo strIPtext & "no es pingable" ElseIf objPingResult.StatusCode = 0 Entonces Ping = True wscript.echo strIPtext & "es pingable" Else Ping = False wscript. echo strIPtext & "no es pingable" Finalizar si siguiente establecer colPingResults = Nada WScript.Quit  

¿Ves que fácil fue eso? Cuando lo ejecuto, proporciona una ventana emergente para saber si la IP era pingable o no.

En este script, solo he marcado una sola dirección IP, pero todo lo que tiene que hacer es incrustar ese ping en el script anterior después de leer cada dirección IP del archivo de texto, y puede hacer ping a cada dirección IP en su lista.

Enviando un correo electrónico

Finalmente, si bien es bueno tener un script que pueda ejecutar que verifique las direcciones IP y muestre una ventana emergente si hay algún error, ¿no sería bueno ejecutar el script diariamente, o varias veces al día y tenerlo? correo electrónico automáticamente con problemas?

Para hacer eso, necesita saber cómo enviar un correo electrónico dentro del script. Si investiga en línea, descubrirá docenas (o más) formas en que las personas logran esto. Con mucho, el más popular es usar el enfoque CDO.

  Opción explícita en error Reanudar siguiente
Const fromEmail = "[email protected]" Const contraseña = "xxxxxxxx"
Dim emailObj, emailConfig Establecer emailObj = CreateObject ("CDO.Message") emailObj.From = [email protected] emailObj.To = "[email protected]" emailObj.Subject = "Test Email" emailObj.TextBody = "Funciona !! "
Establecer emailConfig = emailObj.Configuration emailConfig.Fields ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" emailConfig.Fields ("http://schemas.microsoft.com / cdo / configuration / smtpserverport ") = 465 emailConfig.Fields (" http://schemas.microsoft.com/cdo/configuration/sendusing ") = 2 emailConfig.Fields (" http://schemas.microsoft.com/cdo / configuration / smtpauthenticate ") = 1 emailConfig.Fields (" http://schemas.microsoft.com/cdo/configuration/smtpusessl ") = true emailConfig.Fields (" http://schemas.microsoft.com/cdo/configuration / sendusername ") = fromEmail emailConfig.Fields (" http://schemas.microsoft.com/cdo/configuration/sendpassword ") = contraseña emailConfig.Fields.Update emailObj.Send Establecer emailobj = nada Establecer emailConfig = nada WScript.Quit
 

El script anterior le permitirá enviar cualquier texto para el cuerpo del mensaje como un correo electrónico a cualquier dirección utilizando sus credenciales de Gmail. Puede modificar los parámetros para usar cualquier otro servidor de correo SMTP que desee.

Ahora todo lo que tienes que hacer es juntar esas tres piezas de código. Cuando lo haga, el script leerá en cada lista de direcciones IP, hará ping a cada una y luego enviará esa cadena como el cuerpo del mensaje a un correo electrónico de notificación. Así es como se verá ese correo electrónico.

Como puede imaginar, esto se vuelve bastante útil en el mundo de TI, donde tiene una lista interminable de dispositivos y servidores para vigilar, y solo 24 horas al día. Siempre que pueda tener scripts automatizados que puedan verificar las cosas por usted, hágalo.

Pruebe estas secuencias de comandos de Windows y vea si le ayuda a optimizar su trabajo y hacer que las cosas sean más eficientes. ¿Conoces otras cosas interesantes que puedas hacer con Windows Scripting? Comparte tus pensamientos en la sección de comentarios a continuación.

Crédito de la imagen: Mario Alberto Magallanes Trejo




Nadie ha comentado sobre este artículo todavía.