如何通过Azure CLI或Shell脚本排除指定VM后启动其余虚拟机
排除指定虚拟机批量启动Azure VM的实现方法
你原来的批量启动命令核心是通过az vm list拉取所有VM的资源ID传给启动命令,只需要在拉取VM列表的环节加过滤规则排除指定机器即可,有两种常用实现方式:
方法1:直接修改JMESPath查询(推荐,无额外依赖)
直接在az vm list的查询参数里加过滤条件,不需要额外管道处理,执行效率最高。你只需要把命令里的两个VM名称替换成你实际要排除的虚拟机名即可:
# 请将vm-to-exclude-1、vm-to-exclude-2替换为你需要排除的2台虚拟机的实际名称 az vm start --ids $(az vm list --query "[?name!='vm-to-exclude-1' && name!='vm-to-exclude-2'].id" -o tsv)
方法2:Shell管道过滤(适合排除多台VM的场景)
如果后续需要排除的VM数量可能增加,可以把排除名单单独定义为变量,维护更方便:
# 用|分隔所有需要排除的VM名称 EXCLUDE_VMS="vm-name-1|vm-name-2" az vm start --ids $(az vm list -o tsv --query "[].[id, name]" | grep -v -E "$EXCLUDE_VMS" | awk '{print $1}')
操作提示:正式执行启动命令前,可以先单独运行
$()内的列表查询语句,打印出返回的VM ID/名称列表,确认过滤结果符合预期后,再执行完整启动命令,避免误操作。
内容的提问来源于stack exchange,提问作者Priya Palanisamy
相关产品推荐
相关产品推荐

