使用 Azure CLI 和 JMESPath 进行筛选

rca*_*ton 2 azure-cli jmespath

我正在使用 Azure CLI 获取 vnet 对等互连列表:az network vnet peering list. 这将返回以下结构的 json:

[
  {
    ...
    "name": "prefix1-name",
    ...
  },
  {
    ...
    "name": "prefix2-name",
    ...
  }
]
Run Code Online (Sandbox Code Playgroud)

我正在尝试按以某个前缀开头的名称过滤结果。我尝试了以下各种组合: az network vnet peering list --resource-group my-rg --vnet-name my-vnet --query "[?starts_with(name,'prefix1-')].{name}" 但是这总是失败并显示类似].{name} was unexpected at this time.

我错过了什么?

Nan*_*ong 9

尝试使用az network vnet peering list --resource-group my-rg --vnet-name my-vnet --query "[?starts_with(name,'prefix1-')].name". 您不需要{}name. 这对我有用。

在此处输入图片说明

编辑

对于错误消息,我可以在 Windows 10 机器上本地使用 PowerShell 中的这些 Azure CLI 命令重现它。但这并没有像上面的截图那样出现在我本地的Linux Bash Shell中。此错误也不会出现在 Azure 云外壳中的 PowerShell 和 Bash 上。

在此处输入图片说明

通过我的验证,它看起来像是本地 PowerShell 上的特定场景。当您使用 JMESPath 进行过滤时,我只是尝试了该函数starts_withcontains函数之间需要一个空格,它的工作方式如下:

--query "[?starts_with(name, 'vnet')].name" --query "[?starts_with (name,'vnet')].name" --query "[?starts_with(name,'vnet') ].name" --query "[?starts_with(name,'vnet')] .name"

但这不起作用,如下所示。

--query "[?starts_with(name,'vnet')].name"