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 スクリプトの専門家ではないので、結果を 16 進値などに変換して表示する方法も分かりません。

そこで、このソリューションの短縮版か、もっとクリーンな別のアプローチを探しています。残念ながら、 のようなものは見つかりませんでした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 コマンドの出力は空の文字列になるようです。ただし、比較には 2 つの等号ではなく 1 つの等号を使用する必要があります。

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

関連情報