共用方式為


使用查詢取得 VM 資訊

既然您已建立 VM,就可以擷取其詳細資訊。 從資源取得資訊的常見指令是 show

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

虛擬機有許多屬性,難以以可視化方式剖析。 傳回的 JSON 包含驗證、網路介面記憶體等資訊。 最重要的是,它包含 VM 所連線資源的 Azure 對象識別碼。 物件標識碼允許直接存取這些資源,以取得 VM 組態和功能的詳細資訊。

為了擷取對象標識碼, --query 會使用 自變數。 查詢是以 JMESPath 查詢語言撰寫。 從取得網路介面控制器 (NIC) 物件識別元開始。

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

新增查詢後,這裡有許多新變化正在發生。 其每個部分都會參考輸出 JSON 中的索引鍵,或是 JMESPath 運算元。

  • networkProfile 是最上層 JSON 的索引鍵,其具有 networkInterfaces 作為子機碼。 如果 JSON 值是字典,則會使用運算子 . 從父索引鍵引用其鍵。
  • networkInterfaces 是陣列,因此會以 [] 運算符壓平。 這個運算子會在每個陣列元素上執行查詢的剩餘部分。 在此情況下,它會取得 id 每個陣列元素的值。

輸出格式 tsv (製表元分隔值) 保證只包含結果數據和由製表符與換行符組成的空白符。 由於傳回的值是單一裸字串,因此直接指派給 Shell 變數是安全的。

如需查詢 Azure CLI 輸出的詳細資訊,請參閱 如何使用 JMESPath 查詢來查詢 Azure CLI 命令輸出

現在繼續並將 NIC 物件ID指派給 shell 變數。

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

此範例也示範了短參數的使用。 您可以使用 -g ,而不是 --resource-group-n而不是 --name-o--output