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

如何通过Azure CLI在Bash中查询特定虚拟机的电源状态

在Bash中用Azure CLI查询虚拟机电源状态的方法

要查询Azure虚拟机的电源状态,不用局限于az vm list,可以通过以下几种方式实现,方便在启停VM前做状态校验:

1. 查询单个虚拟机的精准电源状态

使用az vm get-instance-view命令可以获取VM的实例运行状态,这是最可靠的方式:

# 替换成你的资源组和VM名称
az vm get-instance-view --resource-group <你的资源组名> --name <你的VM名称> --query "instanceView.statuses[?code=='PowerState/running'].displayStatus" -o tsv
  • --query参数用来过滤出电源状态的条目,PowerState/running对应运行状态,换成PowerState/deallocated则对应已停止(资源释放)状态
  • -o tsv输出纯文本格式,方便后续Bash脚本里做判断

2. 批量查询多个虚拟机的电源状态

如果要一次性查看某个资源组或订阅下所有VM的状态,用az vm list结合--query提取内置的powerState字段即可:

# 查询指定资源组下所有VM的名称和电源状态,以表格形式输出
az vm list --resource-group <你的资源组名> --query "[].{VM名称:name, 电源状态:powerState}" -o table

# 如果要查询当前订阅下所有VM,去掉--resource-group参数
az vm list --query "[].{VM名称:name, 电源状态:powerState}" -o table

3. 在Bash脚本中校验状态并执行启停操作

下面是两个实用的脚本片段,分别用于启动前检查、停止前检查:

启动VM前确认状态

VM_NAME="test-vm"
RESOURCE_GROUP="test-rg"

# 获取当前电源状态(运行状态则返回值,否则为空)
POWER_STATE=$(az vm get-instance-view --resource-group $RESOURCE_GROUP --name $VM_NAME --query "instanceView.statuses[?code=='PowerState/running'].displayStatus" -o tsv)

if [ -z "$POWER_STATE" ]; then
    echo "VM未运行,开始启动..."
    az vm start --resource-group $RESOURCE_GROUP --name $VM_NAME
else
    echo "VM已处于运行状态,无需操作"
fi

停止VM前确认状态

VM_NAME="test-vm"
RESOURCE_GROUP="test-rg"

# 检查是否已停止(资源释放状态)
POWER_STATE=$(az vm get-instance-view --resource-group $RESOURCE_GROUP --name $VM_NAME --query "instanceView.statuses[?code=='PowerState/deallocated'].displayStatus" -o tsv)

if [ -n "$POWER_STATE" ]; then
    echo "VM已停止并释放资源,无需操作"
else
    echo "VM未停止,开始执行停止并释放资源操作..."
    az vm deallocate --resource-group $RESOURCE_GROUP --name $VM_NAME
fi

注意:如果只是想停止VM但不释放资源,把az vm deallocate换成az vm stop,对应的PowerState代码换成PowerState/stopped

内容的提问来源于stack exchange,提问作者WhoAmI

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:05:25