你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
创建 VM 后,可以检索有关 VM 的详细信息。 用于从资源获取信息的常见命令是 show
。
az vm show --name $vmName --resource-group $resourceGroup
虚拟机具有许多难以直观分析的属性。 返回的 JSON 包含有关身份验证、网络接口存储等的信息。 最重要的是,它包含 VM 连接到的资源的 Azure 对象 ID。 对象 ID 允许直接访问这些资源,以获取有关 VM 的配置和功能的详细信息。
为了提取对象 ID,需要使用--query
参数。 查询以 JMESPath 查询语言编写,首先获取网络接口控制器 (NIC) 对象 ID。
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
。