Dela via


Få information om virtuella datorer med frågor

Nu när du har skapat en virtuell dator kan du få detaljerad information om den. 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. Det viktigaste är att den innehåller objekt-ID:na för Azure för de resurser som den virtuella datorn är ansluten till. Med objekt-ID:n kan du komma åt de här resurserna direkt om du vill ha mer information om den virtuella datorns konfiguration och funktioner.

För att extrahera objekt-ID --query :t används argumentet. Frågor skrivs i JMESPath-frågespråket Börja med att hämta NIC-objekt-ID (Network Interface Controller).

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

Det är mycket som händer här, bara av att du lägger till frågan. Varje del av frågan refererar till en nyckel i JSON-filen med utdata eller är en JMESPath-operator.

  • networkProfile är en nyckel för den översta JSON-filen som har networkInterfaces som en undernyckel. Om ett JSON-värde är en ordlista så 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 id för varje matriselement.

Utdataformatet tsv (tabbavgränsade värden) innefattar endast resultatdata och blanksteg som består av tabbar och nya rader. Eftersom det returnerade värdet är en enda bare-sträng är det säkert att tilldela direkt till en gränssnittsvariabel.

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å hur korta argument används. Du kan använda -g istället för --resource-group, -n istället för --name och -o istället för --output.