使用查詢取得 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
。