
Dies ist eine funktionierende Lösung, aber nicht sehr sauber:
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
Ich konnte nicht herausfinden, was
"$(az vm list -d -o table --query "[?name=='ABSURD_NAME_THAT_CERTAINLY_DOES_NOT_EXIST']")"
zurückkommt, weshalb ich diese Lösung nicht abkürzen konnte.
Ich bin sicherlich kein Experte für Bash-Skripting und weiß nicht, wie ich das Ergebnis in Hex-Werte oder ähnliches umwandeln kann, um es sichtbar zu machen.
Ich suche also entweder nach einer Kurzversion dieser Lösung oder nach einem anderen, saubereren Ansatz. Leider konnte ich nichts dergleichen finden az vm exists
.
Antwort1
Sie könnten verwendenAzure Graphum es zu tun.
az graph query -q "Resources | where type =~'Microsoft.Compute/virtualMachines' | limit 1"
Sie können einige Beispiele sehenHier.
Resources
| where type =~ 'microsoft.compute/virtualmachines' and name matches regex @'^Contoso(.*)[0-9]+$'
| order by name asc
Antwort2
Ich habe vor einiger Zeit die Lösung gefunden. Die Ausgabe des Befehls az vm list, wenn keine VM verfügbar ist, ist anscheinend die leere Zeichenfolge. Sie müssen für den Vergleich jedoch ein Gleichheitszeichen anstelle von zwei verwenden.
if [ "$(az vm list -d -o table --query "[?name=='VM_NAME']")" = "" ];
then
echo "No VM was found."
else
echo "VM was found."
fi