Dela via


Hämta VM-information med frågor

Nu när du har skapat en virtuell dator kan detaljerad information om den hämtas. Det vanliga kommandot för att hämta information från en resurs är show.

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

En virtuell dator har många egenskaper som kan vara svåra att parsa visuellt. Den returnerade JSON-filen innehåller information om autentisering, lagring av nätverksgränssnitt med mera. Viktigast av allt är att den innehåller Azure-objekt-ID:n för resurser som den virtuella datorn är ansluten till. Med objekt-ID:n kan du komma åt dessa resurser direkt för att få mer information om den virtuella datorns konfiguration och funktioner.

För att extrahera objekt-ID används argumentet --query. Frågor skrivs på JMESPath-frågespråket. Börja med att hämta nätverksgränssnittsstyrenhetens (NIC) objekt-ID.

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

Det händer mycket här, bara genom att lägga till en fråga. Varje del av den refererar till en nyckel i utdata-JSON eller är en JMESPath-operator.

  • networkProfile är en nyckel för JSON på den översta nivån, som har networkInterfaces som en undernyckel. Om ett JSON-värde är en ordlista refereras dess nycklar från den överordnade nyckeln med operatorn . .
  • Värdet networkInterfaces är en matris, så det plattas ut med operatorn [] . Den här operatorn kör resten av frågan på varje matriselement. I det här fallet hämtar den värdet för id varje matriselement.

Utdataformatet tsv (tabbavgränsade värden) kommer garanterat endast att innehålla resultatdata och blanksteg som består av flikar och nya streck. Eftersom det returnerade värdet är en enda enkel sträng är det säkert att tilldela direkt till en skalvariabel.

Mer information om hur du kör frågor mot Azure CLI-utdata finns i Köra frågor mot Azure CLI-kommandoutdata med hjälp av en JMESPath-fråga

Gå vidare och tilldela NIC-objekt-ID:t till en gränssnittsvariabel nu.

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

Det här exemplet visar också användningen av korta argument. Du kan använda -g i stället för --resource-group, -n i stället för --name, och -o i stället --outputför .