如何透過 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圖為了做到這一點。

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

我不久前找到了解決方案。如果沒有可用的 vm,則 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

相關內容