如何修改Azure Runbook代码自动获取所在资源组名称
修改Azure Runbook实现自动获取自身所在资源组
要让Runbook自动获取自身所在的资源组名称,你可以按以下方式修改代码:
- 动态获取资源组名称:Runbook属于Azure自动化账户,而自动化账户本身归属于某个资源组。我们可以利用Runbook运行时的系统环境变量
AUTOMATION_ACCOUNT_NAME拿到自动化账户名称,再通过这个名称查询对应的资源组。 - 替换硬编码内容:把原代码中所有硬编码的
RG-TEST替换为动态获取的资源组变量。
修改后的完整代码如下:
# 获取当前Runbook所属自动化账户的资源组名称 $automationAccountName = $env:AUTOMATION_ACCOUNT_NAME $automationAccount = Get-AzAutomationAccount -Name $automationAccountName $resourceGroupName = $automationAccount.ResourceGroupName # 获取目标资源组下的所有VM $vms = Get-AzVM -ResourceGroupName $resourceGroupName foreach($vm in $vms) { # 检查VM状态 $statuscheck = Get-AzVM -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name -Status if($statuscheck.Statuses.DisplayStatus[1] -eq "VM running") { Write-Output "Stopping virtual machine...$($vm.Name)" Stop-AzVM -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name -Force } else { Write-Output "Virtual machine $($vm.Name) is already in stopped state" } }
注意事项
- 确保Runbook的执行账户拥有
Automation Account Reader权限(用于获取自动化账户信息)以及Virtual Machine Contributor权限(用于管理VM)。 AUTOMATION_ACCOUNT_NAME是Runbook运行时自动生成的系统环境变量,无需手动配置。
内容的提问来源于stack exchange,提问作者Roni
相关产品推荐
相关产品推荐

