You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地Shell脚本批量停止Azure VM失败求助:问题排查与方案建议

问题描述

我在本地使用Shell脚本批量停止Azure门户中的VM,但脚本无法正常运行。单独执行相关命令可成功,但通过循环执行时出现问题,怀疑循环逻辑存在异常。请问是否必须使用PowerShell脚本实现此操作?请帮忙排查故障原因。

我的Shell脚本如下:

while read rgname vmname 
do
"azure cli command to stop vm $rganme $vmname"
done < output.txt

output.txt内容如下:

rg1 vm1
rg2 vm2
rg3 vm3
故障排查与解决方案
  • 无需切换到PowerShell:Azure CLI完全支持Shell环境操作,Shell脚本可正常实现批量停止VM的需求,没必要改用PowerShell。
  • 脚本核心错误:
    • 变量拼写错误:脚本中使用了$rganme,但定义的变量是$rgname(少了一个字母g),导致变量无法正确取值,命令执行失败。
    • 命令格式错误:将Azure CLI命令用双引号包裹,Shell会把整个字符串当作一个命令执行,而非解析变量并运行Azure CLI。需去掉双引号,直接编写命令。
  • 修正后的脚本:
while read rgname vmname 
do
    az vm stop --resource-group "$rgname" --name "$vmname"
done < output.txt
  • 额外注意事项:
    • 确保output.txt无多余空行或特殊字符,可通过sed '/^$/d' output.txt过滤空行后再传入循环。
    • 执行脚本前需通过az login完成Azure账号认证,避免权限问题导致命令失败。

内容的提问来源于stack exchange,提问作者Giridhar Kumar Jha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 22:03:10