(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa
PowerShell
PowerShell 1 min

Azure Automation Runbooks: agendamento e execução de PowerShell na cloud

João Barros 17 de December de 2025 1 min de leitura

O Azure Automation é um serviço gerido que executa PowerShell (e Python) Runbooks na cloud, sem necessidade de VM dedicada. Ideal para tarefas agendadas de administração Azure — paragem de recursos, limpeza, relatórios e remediação automática.

Criar conta de Automation e Runbook

# Via PowerShell (ou portal)
New-AzAutomationAccount -Name "aa-bconcepts-ops" -ResourceGroupName "rg-ops" -Location "westeurope"

# Criar Runbook do tipo PowerShell
New-AzAutomationRunbook -AutomationAccountName "aa-bconcepts-ops" `
    -ResourceGroupName "rg-ops" `
    -Name "RB_StopDevVMs" `
    -Type PowerShell

Runbook — paragem automática de VMs de dev

# Código do Runbook
param([string]$ResourceGroup = "rg-dev")

# Autenticação via System-assigned Managed Identity
Connect-AzAccount -Identity

# Parar VMs com tag AutoStop = true
Get-AzVM -ResourceGroupName $ResourceGroup |
    Where-Object { $_.Tags["AutoStop"] -eq "true" } |
    ForEach-Object {
        $status = (Get-AzVM -Name $_.Name -ResourceGroupName $ResourceGroup -Status).Statuses |
                  Where-Object { $_.Code -like "PowerState/*" }
        if ($status.Code -eq "PowerState/running") {
            Write-Output "A parar: $($_.Name)"
            Stop-AzVM -ResourceGroupName $ResourceGroup -Name $_.Name -Force
        }
    }

Variáveis e credenciais seguras

# No Automation Account → Shared Resources → Variables
New-AzAutomationVariable -AutomationAccountName "aa-bconcepts-ops" `
    -ResourceGroupName "rg-ops" -Name "NotifyEmail" `
    -Value "ops@bconcepts.pt" -Encrypted $false

# No Runbook, ler variável:
$email = Get-AutomationVariable -Name "NotifyEmail"

Agendar execução

# Schedule diário às 22:00 Lisboa (UTC+1 no verão)
$schedule = New-AzAutomationSchedule -AutomationAccountName "aa-bconcepts-ops" `
    -ResourceGroupName "rg-ops" -Name "NightlyStop" `
    -StartTime (Get-Date "22:00") -DayInterval 1 -TimeZone "GMT Standard Time"

Register-AzAutomationScheduledRunbook -AutomationAccountName "aa-bconcepts-ops" `
    -ResourceGroupName "rg-ops" -RunbookName "RB_StopDevVMs" `
    -ScheduleName "NightlyStop" -Parameters @{ ResourceGroup = "rg-dev" }

Conclusão

O Azure Automation substitui VMs dedicadas para tarefas de manutenção recorrente. Com Managed Identity, não há credenciais a gerir; com variáveis encriptadas, os segredos ficam seguros; com schedules, a automação é fiável e auditável.

Partilhar: