Sdílet prostřednictvím


Získání informací o virtuálním počítači pomocí dotazů

Teď, když jste vytvořili virtuální počítač, můžete načíst podrobné informace o něm. Běžným příkazem pro získání informací z prostředku je show.

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

Virtuální počítač má mnoho vlastností, které může být obtížné vizuálně analyzovat. Vrácený kód JSON obsahuje informace o ověřování, úložišti síťového rozhraní a dalších. Nejdůležitější je, že obsahuje ID objektů Azure pro prostředky, ke kterým je virtuální počítač připojený. ID objektů umožňují přímý přístup k těmto prostředkům, abyste získali další informace o konfiguraci a možnostech virtuálního počítače.

Pokud chcete extrahovat ID objektu, použije se --query argument. Dotazy se zapisují v dotazovacím jazyce JMESPath. Začněte získáním ID objektu síťového adaptéru (NIC).

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

Tady se hodně děje, stačí přidat dotaz. Každá část odkazuje na klíč ve výstupním formátu JSON nebo je operátorem JMESPath.

  • networkProfile je klíčem json nejvyšší úrovně, který má networkInterfaces jako podklíč. Pokud je hodnota JSON slovníkem, odkazování na jeho klíče probíhá z klíče nadřazeného objektu pomocí operátoru ..
  • Hodnota networkInterfaces je pole, takže je zploštěna operátorem []. Tento operátor spustí zbytek dotazu na každý prvek pole. V tomto případě získá id hodnotu každého prvku pole.

Ve výstupním formátu tsv (hodnoty oddělené tabulátory) je zaručeno, že budou obsahovat pouze výsledná data a prázdné znaky skládající se z tabulátorů a nových řádků. Vzhledem k tomu, že vrácená hodnota je jeden samotný řetězec, je bezpečné přiřadit přímo k shell proměnné.

Další informace o dotazování výstupu Azure CLI najdete v tématu Dotazování výstupu příkazu Azure CLI pomocí dotazu JMESPath.

Pokračujte a přiřaďte ID objektu NIC proměnné shellu.

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

Tento příklad také ukazuje použití krátkých argumentů. Můžete použít -g místo --resource-group, -n místo --name a -o místo --output.