Microsoft Windows sigue siendo el sistema operativo para PCs lider en el mercado. Por su facilidad de uso, es utilizado por usuarios que solo hacen clicks al visitar facebook, escribir mails, o ver videos en internet, pero también es utilizado por compañías dedicadas al desarrollo de software.
Una de las características de un buen software es que puede ser probado de manera automatizada, es decir, cuando hay una nueva versión del software que se está desarrollando, no se necesita un chango haciendo clicks para instalar la nueva versión, y una vez instalada, abrir el software y probar la funcionalidad de él haciendo clicks por todas partes buscando errores.
La idea es crear software que permita ser probado de manera automatizada, y cuando se tiene un software que lo permite, se necesita un sistema operativo que permita definir tareas que se ejecutarán de manera automática, estas tareas se llaman scripts.
Un script es una serie de instrucciones que se le dan directamente al sistema operativo y que se procesan de manera secuencial. El sistema operativo hace uso de sus recursos (pequeños programas) para procesar esas instrucciones. A diferencia de un programa escrito en algún lenguaje de programación como Java o C#, un script no se compila. Para debbugear un script es básicamente necesario ejecutarlo y observar que los resultados sean los deseados. Existen plataformas que ayudan a revisar la sintaxis de los scripts, pero no tan avanzadas como para los lenguajes de programación “convencionales”.
En MS Windows existen varias alternativas para definir este tipo de tareas. Por default VBScript (.vbs), JScript (.js), CMD batches (.bat, .cmd) y PowerShell scripts (.ps1), más muchas otras alternativas que se pueden agregar dependiendo del tipo de tareas que se quieran realizar.
Lo mejor es tener conocimiento de más de una de estas opciones, por que aunque fuera posible hacer todo con solo alguna de ellas, hay tareas que se hacen de manera más fácil y efectiva usando otra. Mis lenguajes preferidos para hacer scripts en Windows son PowerShell scripting y CMD batches. Automatizar tareas usando estos dos lenguajes en combinación resulta muy efectivo.
PowerShell está instalado por default, por lo menos en las últimas tres versiones de Windows, y desde internet se pueden bajar versiones más recientes que ofrecen funcionalidades extra. Programar en PowerShell es fácil y divertido, ya que es un lenguaje .NET, es decir, escribir un script se siente como programar en C# y más aun si se usa el PowerShell ISE (PowerShell Integrated Scripting Environment).
Los resultados de los commandlets son objetos, y existen muchos métodos predefinidos para manipularlos y extraer la información requerida, lo cual es solo un sueño usando CMD batches. Por ejemplo, encontrar una cadena de caracteres dentro de otra a través de un batch es un dolor de cabeza, mientras que en PowerShell existen muchos métodos que facilitan el manejo de strings, básicamente los mismos que al programar en .NET.
Aprender a escribir scripts a través de un libro, o tutorial de internet puede ser muy conveniente, ya que puede ayudar a ahorrar tiempo y dolores de cabeza, a quien se avienta sin conocer las bases. Un buen libro que presenta las bases para realizar scripting en Windows es Windows 7 and Vista Guide to Scripting, Automation, and Command Line Tools.
Hay infinidad de tareas que se pueden realizar usando scripts, y se necesitarían muchos años de práctica constante para conocer la solución a cada tarea, afortunadamente existe en internet suficiente información en forma de foros, blogs, o documentación que ayuda a solucionar los problemas se van presentado cuando se tiene la necesidad de automatizar alguna tarea. Solo hace falta describir de manera corta el problema en un buscador de internet, en idioma inglés es como se logra encontrar la información buscada de manera más efectiva.