使用查詢取得 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 (製表元分隔值) 保證只包含結果數據和空格符,其中包含製表元和換行符。 由於傳回的值是單一裸機字串,所以直接指派給殼層變數是安全的。

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

請繼續並將 NIC 物件標識碼指派給殼層變數。

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

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