Hace un tiempo, cuando en mi empresa realizamos la automatización de despliegues, utilizamos Powershell como lenguaje de scripting para la realización del proceso de despliegue del paquete de aplicación una vez generado.
Hasta entonces no tenía conocimiento de esta tecnología, e investigando un poco más descubrí todo lo potente que es y las posibilidades que ofrece para todos aquellos que trabajan con sistemas Windows.
"Windows PowerShell es un shell de línea de comandos basado en tareas y lenguaje de scripting diseñado especialmente para la administración del sistema. Basado en Microsoft .NET Framework, Windows PowerShell ayuda a los profesionales de TI a controlar y automatizar la administración de los sistemas operativos Windows y las aplicaciones que se ejecutan en Windows.
Para los programadores, Windows PowerShell usa un conjunto extensible de clases de .NET Framework que permiten crear cmdlets, proveedores, aplicaciones host y utilidades personalizados.
Los comandos de Windows PowerShell integrados en Windows, denominados cmdlets, permiten administrar los equipos de la empresa desde la línea de comandos. Los proveedores de Windows PowerShell permiten obtener acceso a almacenes de datos, como el Registro y el almacén de certificados, con la misma simplicidad con que se obtiene acceso al sistema de archivos. Además, Windows PowerShell cuenta con un completo analizador de expresiones y un lenguaje de scripting totalmente desarrollado."
Powershell ofrece los siguientes componentes:
El componente "Windows Powershell" es una consola de comandos en la que se pueden ejecutar las sentencias y scripts que se deseen, al estilo de la consola de comandos de Unix:
El componente "Windows Powershell ISE" (Integrated Scripting Environment) es una aplicación que permite ejecutar comandos y escribir, comprobar y depurar scripts en una sola interfaz gráfica de usuario, un compilador básico que ofrece Microsoft:
Powershell está disponible desde Windows XP, en sus versiones 1 y 2, y en Windows 7 y posteriores está disponible la versión 3.0. En Windows 8, Windows Server 2012 y posteriores ya viene instalado, para otras versiones de Windows no suele venir instalado, así que es necesario descargar e instalar la versión deseada (cuanto más reciente mejor).
Powershell ofrece los siguientes elementos de trabajo:
- Cmdlets
- Funciones
- Scripts
Cmdlets
Los comandos de Powershell se llaman Cmdlets (command-lets). Se reconocen por comenzar por un verbo (por ejemplo Get) seguido de un guión y un nombre descriptivo del comando. Vamos a ver un ejemplo sencillo desde la consola de comandos. Se desea listar el contenido de un directorio, basta con ejecutar el cmdlet "Get-ChildItem" pasando como parámetro el directorio a listar:
Si se desea ver la ayuda relacionada con el cmdlet anterior, basta con utilizar el cmdlet "Get-Help" y pasar como parámetro el cmdlet del que se desea obtener la ayuda:
Hay que destacar que es posible crear y utilizar cmdlets propios.
Funciones
En Powershell también se pueden definir funciones, al igual que en otros lenguajes de programación, y también pueden recibir parámetros:
Una vez creada la función puede utilizarse:
Scripts
Finalmente, se pueden crear ficheros propios con funciones e instrucciones para ejecutar los comandos necesarios para llevar a cabo una acción. Estos ficheros deben almacenarse con extensión ".ps1". Al ser invocados pueden recibir parámetros de entrada y utilizarse durante el script.
En la imagen siguiente puede verse un sencillo script almacenado como "MiScript.ps1", que recibe un parámetro que se utiliza posteriormente al invocar la función "HolaMundo":
Una vez almacenado el fichero, se invoca desde la línea de comandos:
Con un parámetro relleno, se ve que se ejecuta la función "HolaMundo" definida en el script. En caso contrario devuelve "No es un parámetro válido":
Es de destacar en este script de ejemplo que se invoca una función de .Net (IsNullorEmpty(), del objeto String en el Namespace System). Esto nos da una idea de lo potente que puede llegar a ser nuestra programación en Powershell, ya que al propio ecosistema de Powershell (cmdlets disponibles, funciones, etc), se pueden importar o invocar Namespaces específicos del framework .Net y realizar algoritmos y funciones realmente complejas.
Ayuda y recursos
Para finalizar, remarcar que ésta ha sido una introducción muy breve a las características de Powershell. En Internet hay gran cantidad de sitios y tutoriales disponibles para aprender toda la potencia de este lenguaje. Tal el vez el sitio más potente sea
Powershell.org.
En la Academia Virtual de Microsoft (
Microsoft Virtual Academy) se pueden encontrar muchos cursos introductorios y avanzados de Powershell.
Otro día hablaremos de esta academia virtual y otros recursos de Microsoft que nos pueden echar una mano en nuestro aprendizaje.