你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用查询获取 VM 信息

创建 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