Delen via


VM-gegevens ophalen met query's

Nu u een virtuele machine hebt gemaakt, kunt u gedetailleerde informatie hierover ophalen. De algemene opdracht voor het ophalen van informatie uit een resource is show.

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

Een virtuele machine heeft veel eigenschappen die visueel moeilijk te parseren kunnen zijn. De geretourneerde JSON bevat informatie over verificatie, netwerkinterfaceopslag en meer. Het belangrijkste is dat het de Azure-object-id's bevat voor resources waarmee de VIRTUELE machine is verbonden. Met object-id's krijgt u rechtstreeks toegang tot deze resources voor meer informatie over de configuratie en mogelijkheden van de VIRTUELE machine.

Om de object-id te extraheren, wordt het --query argument gebruikt. Query's worden geschreven in de JMESPath-querytaal. Begin met het ophalen van de object-id van de netwerkinterfacecontroller (NIC).

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

Er is hier veel aan de hand, gewoon door de query toe te voegen. Elk deel ervan verwijst naar een sleutel in de uitvoer-JSON of is een JMESPath-operator.

  • networkProfile is een sleutel van de JSON op het hoogste niveau, die als subsleutel heeft networkInterfaces . Als een JSON-waarde een woordenboek is, worden de sleutels ervan vanuit de bovenliggende sleutel met de . operator verwezen.
  • De networkInterfaces waarde is een matrix, dus deze wordt afgevlakt met de [] operator. Met deze operator wordt de rest van de query uitgevoerd op elk matrixelement. In dit geval wordt de id waarde van elk matrixelement opgehaald.

De uitvoerindeling tsv (door tabs gescheiden waarden) bevat gegarandeerd alleen de resultaatgegevens en witruimte bestaande uit tabs en nieuwe regels. Omdat de geretourneerde waarde één lege tekenreeks is, is het veilig om rechtstreeks aan een shellvariabele toe te wijzen.

Voor meer informatie over het uitvoeren van query's op de uitvoer van Azure CLI, zie Hoe de uitvoer van Azure CLI-opdrachten te raadplegen met behulp van een JMESPath-query

Wijs nu de id van het NIC-object toe aan een shellvariabele.

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

In dit voorbeeld ziet u ook het gebruik van korte argumenten. U kunt -g in plaats van --resource-group gebruiken, -n in plaats van --name, en -o in plaats van --output.