既然您已建立 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。