Freigeben über


Abrufen von VM-Informationen mit Abfragen

Nachdem ein virtueller Computer erstellt wurde, können detaillierte Informationen dazu abgerufen werden. Der allgemeine Befehl zum Abrufen von Informationen aus einer Ressource ist show.

az vm show --name $vmName --resource-group $resourceGroup

Ein virtueller Computer verfügt über viele Eigenschaften, die schwer visuell zu analysieren sind. Der zurückgegebene JSON-Code enthält Informationen zu Authentifizierung, Netzwerkschnittstellenspeicher und mehr. Am wichtigsten ist, dass sie die Azure-Objekt-IDs für Ressourcen enthält, mit denen der virtuelle Computer verbunden ist. Objekt-IDs ermöglichen den direkten Zugriff auf diese Ressourcen, um weitere Informationen über die Konfiguration und Funktionen des virtuellen Computers zu erhalten.

Um die Objekt-ID zu extrahieren, wird das --query Argument verwendet. Abfragen werden in der JMESPath-Abfragesprache geschrieben. Beginnen Sie mit dem Abrufen der Netzwerkinterface-Controller-Objekt-ID (NIC).

az vm show --name $vmName \
  --resource-group $resourceGroup \
  --query 'networkProfile.networkInterfaces[].id' \
  --output tsv

Allein durch das Hinzufügen der Abfrage passiert hier viel. Jeder Teil davon verweist auf einen Schlüssel im Ausgabe-JSON oder ist ein JMESPath-Operator.

  • networkProfile ist ein Schlüssel des obersten JSON-Levels, der networkInterfaces als Unterschlüssel hat. Wenn ein JSON-Wert ein Wörterbuch ist, werden seine Schlüssel vom übergeordneten Schlüssel mit dem . Operator referenziert.
  • Der networkInterfaces Wert ist ein Array, sodass er mit dem [] Operator abgeflacht wird. Dieser Operator führt den Rest der Abfrage für jedes Arrayelement aus. In diesem Fall wird der id Wert jedes Arrayelements abgerufen.

Das Ausgabeformat tsv (tabstopptrennte Werte) enthält garantiert nur die Ergebnisdaten und Leerzeichen, die aus Registerkarten und Newlines bestehen. Da der zurückgegebene Wert eine einfache Zeichenfolge ist, kann er sicher direkt einer Shell-Variable zugewiesen werden.

Weitere Informationen zum Abfragen der Azure CLI-Ausgabe finden Sie unter Abfragen der Azure CLI-Befehlsausgabe mithilfe einer JMESPath-Abfrage

Fahren Sie fort, und weisen Sie jetzt die NIC-Objekt-ID einer Shellvariable zu.

nicId=$(az vm show \
  -n $vmName \
  -g $resourceGroup \
  --query 'networkProfile.networkInterfaces[].id' \
  -o tsv)

In diesem Beispiel wird auch die Verwendung von kurzen Argumenten veranschaulicht. Sie können -g anstelle von --resource-group, -n anstelle von --name und -o anstelle von --output verwenden.