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.