Azure自动化Runbook返回错误资源组名问题求助
问题原因
Get-AzVM "SH-COMPANY-AD-0" 的写法有误:Get-AzVM 的第一个位置参数是 ResourceGroupName,而非虚拟机名称。执行时PowerShell会把 "SH-COMPANY-AD-0" 识别为资源组名称去查找,但目标VM实际属于 "COMPANY-INTERNAL-CLOUD" 资源组,因此抛出ResourceGroupNotFound错误。
解决方案
方案1:明确指定资源组和VM名称(推荐)
直接通过参数精准定位VM,执行效率最高:
$AzureVMs = Get-AzVM -ResourceGroupName "COMPANY-INTERNAL-CLOUD" -Name "SH-COMPANY-AD-0" $AzureVMs | ForEach-Object { $job += Invoke-AzVmRunCommand ` -ResourceGroupName $_.ResourceGroupName ` -VMName $_.Name ` -CommandId "RunPowerShellScript" ` -ScriptPath "$env:TEMP\CleanerScript.ps1" }
方案2:跨资源组查找VM(适用于未知资源组场景)
如果不确定VM所属资源组,可以遍历所有VM筛选目标名称(多订阅环境下需先切换到对应订阅):
$AzureVMs = Get-AzVM | Where-Object { $_.Name -eq "SH-COMPANY-AD-0" } $AzureVMs | ForEach-Object { $job += Invoke-AzVmRunCommand ` -ResourceGroupName $_.ResourceGroupName ` -VMName $_.Name ` -CommandId "RunPowerShellScript" ` -ScriptPath "$env:TEMP\CleanerScript.ps1" }
注:此方法在资源数量较多时执行较慢,优先使用方案1。
内容的提问来源于stack exchange,提问作者jymmyboi
相关产品推荐
相关产品推荐

