En este artículo “PowerShell (parte 1)” comentaré unos conceptos básicos para poder desarrollar scripts en PowerShell.
Os explicaré que es PowerShell, como funciona, como interaccionar y pondré un par de scripts básicos para que se entienda.
Para poder hacer uso de la misma solo tenéis que buscar en Windows: Powershell. O apretar el botón de inicio + R simultáneamente y en la ventana que aparece introducir PowerShell.
Existe una interfaz gráfica de edición la cual trataremos al final de este artículo.

PowerShell

Es una interfaz de consola destinada a ser usada por administradores para automatizar tareas o realizarlas de forma controlada / sin tener que depender del cliente.
PowerShell es un lenguaje script desarrollado por Microsoft y cuyo código fuente se puede leer en su página de GitHub.
Se puede considerar a PowerShell una ampliación de la consola CMD ya que es capaz de correr todos sus comandos y aporta nuevas funcionalidades.
PowerShell a diferencia de otros lenguajes script no es “case sensitive”, es decir tolera las mayúsculas, minúsculas y no requiere de su escritura exacta.
PowerShell utiliza la extensión “.ps1” por defecto para sus scripts.

Conceptos básicos

Intentaré explicar un par de conceptos básicos que necesitaremos entender para los posteriores scripts. No me extenderé mucho por que si no esto se hará aburridísimo.

Comentarios

Como todo buen lenguaje de “programación”, PowerShell tiene la opción de añadir comentarios. De hecho siempre os recomendaría que comentarais lo que estáis desarrollando. No hay sensación más frustrante que ver un código un año más tarde y perder media hora intentando enterarte de lo que escribiste.
Hay dos formas de hacer en PowerShell:

  • La primera (<# comentario #>): Con esta opción podrás realizar comentarios que abarquen más de una línea, todo lo que se encuentre entre los corchetes será comentado.
  • La segunda (# comentario): En esta opción requieres de un espacio después del corchete, todo lo que se encuentre en la línea será comentado.

En el ejemplo siguiente os muestro como funcionarían los comentarios, en este caso realizaríamos un ping a Amazon.

Ayuda

Se podrá obtener ayuda o un pequeño manual introduciendo los siguientes caracteres al final del comando: -?
Una forma alternativa y más completa sería el Cmdlet get-help, que dependiendo de como se use te dará más o menos ayuda.

Para actualizar la base de datos de ayuda utilizaremos el siguiente comando:

Cmdlet

Son comandos ligeros utilizados en PowerShell para realizar acciones y devolver resultados. Tienen un formato que se asemeja al lenguaje natural estructurado de la siguiente forma <verbo>-<objeto>.
La parte del verbo indica la acción que se llevará a cabo y la parte del objeto indica sobre que se llevará a cabo.
No es necesario aprenderse los Cmdlet ya que hay herramientas que nos ayudarán a obtenerlos, pero si quieres obtenerlos todos solo has de ejecutar el comando del ejemplo.
Importante es el valor del verbo, os pondré unos cuantos para que se entienda mejor, tenéis todos aquí:

  • New: Crea un nuevo recurso
  • Set: Modifica un recurso existente
  • Find: Busca un objeto
  • Get: Obtiene el valor de un recurso
  • Read: Extrae el valor de un recurso
  • Remove: Elimina el contenido de un contenedor
Alias

Los alias son pseudónimos que nos facilitan el memorizar los comandos que proporcionamos al Cmdlet. Para obtenerlos sobra con pone el siguiente comando:

Parametros

Son los valores que introducimos a los Cmdlets, se alternan de la siguiente manera cmdlet -parametro valor1 -parametro valor2… Por ejemplo si quisieramos mostrar todos los Cmdlet que empiezen por Update introduciríamos el siguiente comando:

En este comando se puede observar como hacemos uso del “wildcard” (*) utilizado para reemplazar cualquier tipo y numero de caracteres.
Para obtener los parámetros disponibles en un Cmdlet simplemente hace falta poner un “-” y darle con el tabulador, se irán autocompletando los parámetros disponibles.

Pipeline

Sirve para concatenar Cmdlets, pasando el resultado de la primera a la segunda y de la segunda a la tercera. Se pueden usar tantas como consideremos oportunas. Un ejemplo de como funcionaría sería el siguiente:

Módulos

Los módulos son paquetes con agrupan scripts y Cmdlets necesarios para la administración de diversas funciones/infraestructuras. En un futuro intentaremos automatizar y gestionar diversos servicios de Microsoft y haremos uso de estos módulos.
Para obtener una lista con todos los módulos ejecuta el siguiente comando:

Atajos de teclado

Para facilitar la interacción con PowerShell disponemos de ciertos atajos de teclado que nos ahorraran mucho tiempo. Estos son los siguientes:

  • Historial de comandos: mediante la flecha hacia arriba navegaremos por el historial de comandos hacia atrás, con la flecha hacia abajo navegaremos hacia delante.
  • F8: Buscaremos el comando en nuestro historial de comandos, es decir si pongo get- y presiono F8 me saldrán todos los comandos utilizados que empiecen por get.
  • Tabulador: Con la tecla tabulador podrás autocompletar Cmdlets, nombres de archivo, directorios etc…
  • Ctrl+C: con este atajo finalizarás la ejecución de un comando, puede que lo necesites en caso de crear un bucle o testear funciones en los comandos.

PowerShell ISE

Se trata de un entorno gráfico en el cual podremos programar los scripts con ayuda visual. Posee una interfaz en la cual podemos buscar los scripts y ver los parámetros que se pueden introducir.
Yo la utilizo cuando tengo que desarrollar scripts largos, puesto que puedes ir metiendo pausas y viendo donde se generan problemas. Os dejo una captura de pantalla con el comando “get-command” y un video donde se explica como utilizar PS ISE (la calidad es algo mala pero para la explicación nos vale):

Utilizando PowerShell ISE para obtener todos los comandos relacionados con Az*
Utilizando PowerShell ISE para obtener todos los comandos relacionados con Az*

Conclusión

Este artículo ha sido meramente introductorio a los conceptos básicos de PowerShell. En próximos capítulos trataremos conceptos como son: Variables, Bucles, Condicionales, Funciones, Políticas de ejecución, WMI, Ejecuciones remotas y muchos más.
Este artículo corresponde a la categoría administración, puede que en un futuro obtenga su categoría propia.
Con esto concluyo Powershell (parte 1), espero que no se os haya hecho muy pesado y si tenéis alguna mejora no dudéis en comentarla.