如何通过 Azure CLI 检查 VM 是否已存在?

如何通过 Azure CLI 检查 VM 是否已存在?

这是一个可行的解决方案,但不太干净:

if [ "$(az vm list -d -o table --query "[?name=='VM_NAME']")" == "$(az vm list -d -o table --query "[?name=='ABSURD_NAME_THAT_CERTAINLY_DOES_NOT_EXIST']")" ]; 
then
    printf "VM DOES NOT EXIST YET"
else
    printf "VM ALREADY EXISTS"
fi

我搞不清楚
"$(az vm list -d -o table --query "[?name=='ABSURD_NAME_THAT_CERTAINLY_DOES_NOT_EXIST']")"
返回了什么,这就是为什么我无法缩短这个解决方案。
我当然不是 Bash 脚本方面的专家,我不知道如何将结果转换为十六进制值或类似值以使其可见。

因此,我正在寻找此解决方案的简短版本或其他更简洁的方法。不幸的是,我找不到类似的东西az vm exists

答案1

你可能会使用Azure Graph为了做到这一点。

az graph query -q "Resources | where type =~'Microsoft.Compute/virtualMachines' | limit 1"

您可以看一些例子这里

Resources
| where type =~ 'microsoft.compute/virtualmachines' and name matches regex @'^Contoso(.*)[0-9]+$'
| order by name asc

答案2

我前段时间找到了解决方案。如果没有可用的虚拟机,az vm list 命令的输出显然是空字符串。但您必须使用一个等号而不是两个等号进行比较。

if [ "$(az vm list -d -o table --query "[?name=='VM_NAME']")" = "" ];
then
    echo "No VM was found."
else
    echo "VM was found."
fi

相关内容