Criar e salvar scripts no Azure PowerShell

Concluído

Tarefas complexas ou repetitivas geralmente demandam uma grande quantidade de tempo administrativo. As organizações preferem automatizar essas tarefas para reduzir os custos e evitar erros.

A automação é importante no exemplo de empresa de CRM (gerenciamento de relacionamento com o cliente). Lá, você pode testar seu software em várias VMs (Máquinas Virtuais) do Linux que você precisa excluir e recriar continuamente. É interessante usar um script do PowerShell para automatizar a criação de VMs em vez de sempre criá-las manualmente.

Além da operação principal de criar uma VM, há mais alguns requisitos para o script:

  • Você criará várias VMs, então é melhor que você coloque a criação em um loop.
  • Você precisa criar VMs em três grupos de recursos diferentes, portanto, o nome do grupo de recursos deve ser passado para o script como um parâmetro.

Nesta seção, você verá como escrever e executar um script do Azure PowerShell que atenda a esses requisitos.

O que é um script do PowerShell?

Um script do PowerShell é um arquivo de texto que contém comandos e constructos de controle. Os comandos são invocações de cmdlets. Os constructos de controle estão programando recursos como loops, variáveis, parâmetros, comentários etc., fornecidos pelo PowerShell.

Arquivos de script do PowerShell têm uma extensão de arquivo .ps1. Você pode criar e salvar esses arquivos com qualquer editor de texto.

Dica

Se você está gravando scripts do PowerShell no Windows, use o Ambiente de Script Integrado do Windows PowerShell (ISE). Esse editor fornece recursos como cor de sintaxe e uma lista de cmdlets disponíveis.

A captura de tela a seguir mostra o ISE (Ambiente de Script Integrado) do Windows PowerShell com um script de exemplo para se conectar ao Azure e criar uma máquina virtual no Azure.

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

Uma vez que você tenha escrito o script, execute-o na linha de comando do PowerShell, passando o nome do arquivo precedido por um ponto e uma barra invertida:

.\myScript.ps1

Técnicas do PowerShell

O PowerShell tem muitos recursos encontrados em linguagens de programação típicas. Você pode definir as variáveis, usar branches e loops, capturar os parâmetros de linha de comando, escrever funções, adicionar comentários e assim por diante. Precisaremos de três recursos para o script: variáveis, loops e parâmetros.

Variáveis

Na unidade anterior, você viu que o PowerShell dá suporte a variáveis. Use $ para declarar uma variável e = para atribuir um valor. Por exemplo:

$loc = "East US"
$iterations = 3

As variáveis podem conter objetos. Por exemplo, a definição a seguir define a variável adminCredential para o objeto retornado pelo cmdlet Get-Credential.

$adminCredential = Get-Credential

Para obter o valor armazenado em uma variável, use o prefixo $ e o nome dele, conforme mostrado abaixo:

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

Loops

O PowerShell tem várias estruturas de loop, incluindo For, Do...While e For...Each. O loop For é o que melhor corresponde às nossas necessidades, porque vamos executar um cmdlet um número fixo de vezes.

O exemplo a seguir mostra a sintaxe principal. O exemplo é executado em duas iterações e imprime o valor de i a cada vez. Os operadores de comparação são gravados -lt para "menor que", -le para "menor ou igual", -eq para "igual", -ne para "não igual", etc.

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

Parâmetros

Quando você executa um script, é possível passar argumentos na linha de comando. É possível fornecer nomes para cada parâmetro para ajudar o script a extrair os valores. Por exemplo:

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

Dentro do script, você capturará os valores em variáveis. Neste exemplo, os parâmetros são correspondidos por nome:

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

É possível omitir os nomes da linha de comando. Por exemplo:

.\setupEnvironment.ps1 5 "East US"

Dentro do script, você usará a posição para a correspondência quando os parâmetros não forem nomeados:

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

Podemos usar esses parâmetros como entrada e usar um loop para criar um conjunto de VMs com os parâmetros especificados. Tentaremos isso a seguir.

A combinação do PowerShell com o Azure PowerShell fornece todas as ferramentas de que você precisa para automatizar o Azure. Em nosso exemplo de CRM, poderemos criar várias VMs do Linux usando um parâmetro para manter o script genérico e um loop para evitar código repetido. Esse script nos permite executar uma operação que era complexa em uma única etapa.