VM-informatie ophalen met query's
Nu er een VM is gemaakt, kan er gedetailleerde informatie over de VM worden opgehaald. De algemene opdracht om informatie op te halen 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. Bovenal bevat de JSON de Azure-object-id's van de resources waarmee de VM is verbonden. Met object-id's kan er rechtstreeks toegang worden verkregen tot deze resources om meer informatie over de configuratie en de mogelijkheden van de VM te krijgen.
Om de object-id te extraheren, wordt het --query
argument gebruikt. Query's worden geschreven in de JMESPath-querytaalBeginnen met het ophalen van de NIC-object-id (network interface controller).
az vm show --name $vmName \
--resource-group $resourceGroup \
--query 'networkProfile.networkInterfaces[].id' \
--output tsv
Door simpelweg de query toe te voegen, wordt er van alles in gang gezet. Elk onderdeel van de query verwijst naar een sleutel in de uitvoer-JSON of is een JMESPath-operator.
networkProfile
is een sleutel van de bovenste JSON dienetworkInterfaces
als subsleutel heeft. Als een JSON-waarde een woordenlijst is, wordt er vanaf de bovenste sleutel met de operator.
verwezen naar de sleutels hiervan.- De
networkInterfaces
waarde is een matrix, dus deze wordt afgevlakt met de[]
operator. Deze operator voert de rest van de query uit op elk matrixelement. In dit geval haalt de operator van elk matrixelement de waardeid
op.
De indeling van de uitvoer tsv
(door tabs gescheiden waarden) bevat gegarandeerd alleen de resultaatgegevens en witruimte in de vorm van tabs en nieuwe regels.
Omdat de geretourneerde waarde één lege tekenreeks is, is het veilig om rechtstreeks aan een shellvariabele toe te wijzen.
Zie Voor meer informatie over het uitvoeren van query's op Azure CLI-uitvoer 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 wordt ook het gebruik van korte argumenten getoond. U kunt -g
gebruiken in plaats van --resource-group
, -n
in plaats van --name
en -o
in plaats van --output
.