Condividi tramite


Ottenere informazioni sulla macchina virtuale con query

Ora che è stata creata una macchina virtuale, è possibile recuperarne informazioni dettagliate. Il comando comune per ottenere informazioni da una risorsa è show.

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

Una macchina virtuale ha molte proprietà che possono essere difficili da analizzare visivamente. Il codice JSON restituito contiene informazioni sull'autenticazione, sull'archiviazione dell'interfaccia di rete e altro ancora. Soprattutto, contiene gli ID oggetto di Azure per le risorse a cui è connessa la macchina virtuale. Gli ID oggetto consentono di accedere direttamente a queste risorse per ottenere altre informazioni sulla configurazione e sulle funzionalità della macchina virtuale.

Per estrarre l'ID oggetto, viene utilizzato l'argomento --query . Le query vengono scritte nel linguaggio di query JMESPathIniziare con ottenere l'ID oggetto NIC (Network Interface Controller).

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

C'è molto da fare, aggiungendo semplicemente la query. Ogni parte fa riferimento a una chiave nel codice JSON di output o è un operatore JMESPath.

  • networkProfile è una chiave del codice JSON di primo livello, che ha networkInterfaces come sottochiave. Se un valore JSON è un dizionario, viene fatto riferimento alle relative chiavi dalla chiave padre con l'operatore . .
  • Il networkInterfaces valore è una matrice, quindi viene appiattito con l'operatore [] . Questo operatore esegue il resto della query su ogni elemento della matrice. In questo caso, ottiene il id valore di ogni elemento della matrice.

Il formato di tsv output (valori delimitati da tabulazioni) è garantito solo includere i dati dei risultati e gli spazi vuoti costituiti da tabulazioni e righe nuove. Poiché il valore restituito è una singola stringa bare, è possibile assegnare direttamente a una variabile della shell.

Per ulteriori informazioni su come eseguire query sull'output della CLI di Azure, vedere Come eseguire query sull'output dei comandi della CLI di Azure usando una query JMESPath

Procedere e assegnare l'ID oggetto NIC a una variabile della shell.

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

In questo esempio viene inoltre illustrato l'uso di argomenti brevi. È possibile usare -g anziché --resource-group, -n anziché --name, e -o invece di --output.