Exercício – Parâmetros

Concluído

Nesta unidade, você usará o Azure Cloud Shell no lado direito da tela como terminal do Linux. O Azure Cloud Shell é um shell que pode ser acessado por meio do portal do Azure ou em https://shell.azure.com. Você não precisa instalar nada no computador para usá-lo.

Uma forma de deixar os scripts flexíveis é usar parâmetros para que os usuários possam fornecer entradas quando o script for executado. Neste exercício, você criará um script de backup e adicionará parâmetros a ele.

Criar um script de backup

Uma tarefa comum é criar um backup. Normalmente, um backup é um arquivo compactado que armazena todos os arquivos pertencentes, por exemplo, a um aplicativo. Quando instalou o PowerShell, você recebeu o cmdlet Compress-Archive, que pode ajudar a concluir esta tarefa.

  1. No terminal do Cloud Shell, execute estes comandos bash:

    mkdir app
    cd app
    touch index.html app.js
    cd ..
    

    Agora você deve ter um diretório chamado app. Você já pode trabalhar com o PowerShell.

  2. No mesmo terminal, inicie um shell do PowerShell (se ainda não tiver iniciado) executando pwsh:

    pwsh
    
  3. Crie um arquivo de script chamado Backup.ps1 no diretório atual e abra-o no editor de código.

    touch Backup.ps1
    code Backup.ps1
    
  4. Adicione este conteúdo ao arquivo e salve o arquivo. Você pode usar CTRL-S no Windows e Linux ou CMD+S no Mac para salvar.

    $date = Get-Date -format "yyyy-MM-dd"
    Compress-Archive -Path './app' -CompressionLevel 'Fastest' -DestinationPath "./backup-$date"
    Write-Host "Created backup at $('./backup-' + $date + '.zip')"
    

    O script invoca Compress-Archive e usa três parâmetros:

    • -Path é o diretório dos arquivos que você deseja compactar.
    • -CompressionLevel especifica o quanto os arquivos devem ser compactados.
    • -DestinationPath é o caminho para o arquivo compactado resultante.
  5. Executar o script:

    ./Backup.ps1 
    

    Você deverá ver este resultado:

    Created backup at ./backup-<current date as YYYY-MM-DD>.zip
    

Adicionar parâmetros ao script

Se você adicionar parâmetros ao script, os usuários poderão fornecer valores quando ele for executado. Você adicionará parâmetros ao script de backup para habilitar a configuração da localização dos arquivos de origem e o arquivo zip resultante.

  1. Adicione o código a seguir à parte superior do arquivo Backup.ps1 .

    Observação

    Use o comando code Backup.ps1 para abrir o arquivo se o editor não estiver aberto.

    Param(
      [string]$Path = './app',
      [string]$DestinationPath = './'
    )
    

    Você adicionou dois parâmetros ao script: $Path e $DestinationPath. Você também forneceu valores padrão para que os usuários não precisem fornecer valores. Os usuários poderão substituir os valores padrão se precisarem. Você precisa ajustar o script para usar esses parâmetros. Você fará isso a seguir.

  2. Altere o código no arquivo para usar os parâmetros e salve o arquivo. Backup.ps1 agora deve ter esta aparência:

    Param(
      [string]$Path = './app',
      [string]$DestinationPath = './'
    )
    $date = Get-Date -format "yyyy-MM-dd"
    Compress-Archive -Path $Path -CompressionLevel 'Fastest' -DestinationPath "$($DestinationPath + 'backup-' + $date)"
    Write-Host "Created backup at $($DestinationPath + 'backup-' + $date + '.zip')"
    
  3. Renomeie o diretório do aplicativo para webapp executando este comando:

    mv app webapp
    

    Renomear o diretório do aplicativo simula o fato de que nem todos os diretórios que você precisará fazer backup serão chamados de aplicativo.

    Você não pode mais usar o valor padrão para $Path. Você precisará fornecer um valor por meio do console quando executar o script.

  4. Remova o arquivo de backup, substituindo <current date as YYYY-MM-DD> pela data atual:

    rm backup-<current date as YYYY-MM-DD>.zip
    

    Você está removendo esse arquivo para receber uma mensagem informando que o valor $Path não existe. Caso contrário, você receberia uma mensagem informando que o arquivo zip já existe e o problema que estamos tentando corrigir ficaria oculto.

  5. Execute o script sem fornecer parâmetros. (O script usará valores padrão para os parâmetros.)

    ./Backup.ps1
    

    Você verá um uma mensagem de erro semelhante a esta:

    Line |
       8 |  Compress-Archive -Path $Path -CompressionLevel 'Fastest' -Destination …
         |  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         | The path './app' either does not exist or is not a valid file system path.
    Created backup at ./backup-<current date as YYYY-MM-DD>.zip
    

    O script notifica que ele não pode encontrar o diretório ./app. Agora, é hora de fornecer um valor para o parâmetro $Path e ver o benefício de adicionar parâmetros ao script.

  6. Teste o script executando-o:

    ./Backup.ps1 -Path './webapp'
    

    Você verá uma mensagem semelhante à que recebeu antes:

    Created backup at ./backup-<current date as YYYY-MM-DD>.zip
    

    Agora você pode usar parâmetros se o diretório que você deseja fazer backup não for chamado ./app ou se quiser colocar o arquivo compactado em algum lugar diferente do diretório atual.

Parabéns. Você criou um script de backup que poderá usar sempre que desejar criar um backup para um diretório de aplicativo ou qualquer outro diretório importante. Depois, você identificou partes do script que talvez precisem ser alteradas com frequência e substituiu valores estáticos por valores de parâmetro. Dessa forma, você provavelmente não precisará alterar o próprio script quando seus requisitos mudarem (por exemplo, se o nome do aplicativo mudar ou você precisar alterar o caminho de destino).