Creación y guardado de scripts en Azure PowerShell

Completado

Las tareas complejas o repetitivas suelen consumir una gran cantidad de tiempo administrativo. Las organizaciones prefieren automatizar estas tareas para reducir los costos y evitar errores.

La automatización es importante en el ejemplo de la empresa Administración de relaciones con los clientes (CRM). En ese ejemplo, el software se prueba en varias Linux Virtual Machines (VM) que es necesario eliminar y volver a crear de forma continua. Quiere usar un script de PowerShell para automatizar la creación de las máquinas virtuales en lugar de crearlas manualmente cada vez.

Además de la operación básica para crear una máquina virtual, hay varios requisitos más para el script:

  • Creará varias máquinas virtuales, por lo que le interesa colocar la creación dentro de un bucle.
  • Tendrá que crear las máquinas virtuales en tres grupos de recursos diferentes, por lo que el nombre del grupo de recursos se debe pasar al script como un parámetro.

En esta sección, verá cómo escribir y ejecutar un script de Azure PowerShell que cumple estos requisitos.

¿Qué es un script de PowerShell?

Un script de PowerShell es un archivo de texto que contiene comandos y construcciones de control. Los comandos son invocaciones de los cmdlets. Las construcciones de control son características de programación como bucles, variables, parámetros, comentarios, etc., proporcionadas por PowerShell.

Los archivos de script de PowerShell tienen la extensión de archivo .ps1. Puede crear y guardar estos archivos con cualquier editor de texto.

Sugerencia

Si va a escribir scripts de PowerShell en Windows, puede usar el entorno de scripting integrado (ISE) de Windows PowerShell. Este editor proporciona características como color de sintaxis y una lista de los cmdlets disponibles.

La captura de pantalla siguiente muestra Windows PowerShell ISE con un script de ejemplo para conectarse a Azure y crear una máquina virtual en Azure.

Screenshot of the Windows PowerShell Integrated Scripting Environment with a script to create a virtual machine open in the editing window.

Después de escribir el script, para ejecutarlo desde la línea de comandos de PowerShell, pase el nombre del archivo precedido por un punto y una barra diagonal inversa:

.\myScript.ps1

Técnicas de PowerShell

PowerShell tiene muchas características que se encuentran en los lenguajes de programación típicos. Se pueden definir variables, usar bifurcaciones y bucles, parámetros de línea de comandos de captura, escribir funciones, agregar comentarios y así sucesivamente. En este script se necesitarán tres características: variables, bucles y parámetros.

Variables

Como ha visto en la unidad anterior, PowerShell admite variables. Use $ para declarar una variable y = para asignar un valor. Por ejemplo:

$loc = "East US"
$iterations = 3

Las variables pueden contener objetos. Por ejemplo, en la definición siguiente se establece la variable adminCredential para el objeto devuelto por el cmdlet Get-Credential.

$adminCredential = Get-Credential

Para obtener el valor almacenado en una variable, use el prefijo $ y su nombre como se muestra a continuación:

$loc = "East US"
New-AzResourceGroup -Name "MyResourceGroup" -Location $loc

Bucles

PowerShell tiene varias estructuras de bucle, como For, Do...While y For...Each. El bucle For es la mejor coincidencia para nuestras necesidades ya que ejecutaremos un cmdlet un número fijo de veces.

En el ejemplo siguiente se muestra la sintaxis básica. El ejemplo se ejecuta durante dos iteraciones y, cada vez, se imprime el valor de i. Los operadores de comparación se escriben -lt para "menor que", -le para "menor o igual que", -eq para "igual", -ne para "no igual", etc.

For ($i = 1; $i -lt 3; $i++)
{
    $i
}

Parámetros

Cuando se ejecuta un script, se pueden pasar argumentos en la línea de comandos. Se pueden proporcionar nombres para cada parámetro para ayudar a que el script extraiga los valores. Por ejemplo:

.\setupEnvironment.ps1 -size 5 -location "East US"

Dentro del script, los valores se capturan en variables. En este ejemplo, los parámetros se comparan por nombre:

param([string]$location, [int]$size)

Puede omitir los nombres de la línea de comandos. Por ejemplo:

.\setupEnvironment.ps1 5 "East US"

Dentro del script, se recurre a la posición para buscar coincidencias cuando los parámetros no tienen nombre:

param([int]$size, [string]$location)

Podríamos tomar estos parámetros como entrada y usar un bucle para crear un conjunto de máquinas virtuales con los parámetros especificados. A continuación, intentaremos esto.

La combinación de PowerShell y Azure PowerShell ofrece todas las herramientas necesarias para la automatización de Azure. En nuestro ejemplo CRM, podremos crear varias máquinas virtuales con Linux con un parámetro para que el script sea genérico y un bucle para evitar código repetido. Este script nos permite ejecutar una operación anteriormente compleja en un solo paso.