Partager via


Obtenir des informations sur la machine virtuelle avec des requêtes

Maintenant que vous avez créé une machine virtuelle, des informations détaillées sur celle-ci peuvent être récupérées. La commande courante pour obtenir des informations à partir d’une ressource est show.

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

Une machine virtuelle a de nombreuses propriétés qui peuvent être difficiles à analyser visuellement. Le JSON retourné contient des informations sur l’authentification, le stockage d’interface réseau et bien plus encore. Plus important encore, il contient les ID d’objet Azure pour les ressources auxquelles la machine virtuelle est connectée. Les ID d’objet permettent d’accéder directement à ces ressources pour obtenir plus d’informations sur la configuration et les fonctionnalités de la machine virtuelle.

Pour extraire l’ID d’objet, l’argument --query est utilisé. Les requêtes sont écrites dans le langage de requête JMESPath. Commencez par obtenir l’ID d’objet du contrôleur d’interface réseau( NIC).

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

Il se passe beaucoup de choses ici, juste en ajoutant la requête. Chaque partie fait référence à une clé dans le JSON de sortie ou est un opérateur JMESPath.

  • networkProfile est une clé du json de niveau supérieur, qui a networkInterfaces comme sous-clé. Si une valeur JSON est un dictionnaire, ses clés sont référencées à partir de la clé parente avec l’opérateur . .
  • La networkInterfaces valeur est un tableau. Il est donc aplatit avec l’opérateur [] . Cet opérateur exécute le reste de la requête sur chaque élément de tableau. Dans ce cas, il obtient la id valeur de chaque élément de tableau.

Le format tsv de sortie (valeurs séparées par des onglets) est garanti d’inclure uniquement les données de résultat et les espaces blancs composés d’onglets et de nouvelles lignes. Étant donné que la valeur retournée est une seule chaîne nue, il est sûr d’affecter directement à une variable shell.

Pour plus d’informations sur l’interrogation de la sortie Azure CLI, consultez Comment interroger la sortie de commande Azure CLI à l’aide d’une requête JMESPath

Allez-y et affectez l’ID d’objet de carte réseau à une variable shell maintenant.

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

Cet exemple illustre également l’utilisation d’arguments courts. Vous pouvez utiliser -g au lieu de --resource-group, -n au lieu de --name, et -o au lieu de --output.