你当前正在访问 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 配置和功能的详细信息。
可以使用 --query
参数来提取对象 ID。 查询采用 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
。