【问题标题】:Filtering with Azure CLI and JMESPath使用 Azure CLI 和 JMESPath 进行筛选
【发布时间】:2019-12-03 09:39:49
【问题描述】:

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

[
  {
    ...
    "name": "prefix1-name",
    ...
  },
  {
    ...
    "name": "prefix2-name",
    ...
  }
]

我正在尝试按以某些前缀开头的名称过滤结果。我尝试了以下各种组合: 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 的消息。

我错过了什么?

【问题讨论】:

    标签: azure-cli jmespath


    【解决方案1】:

    尝试使用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 云 shell 中的 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"

    【讨论】:

    • 感谢您的回复。不幸的是,这是我尝试过的变体之一,我得到了相同的结果。我刚刚发现答案是在 ) 和 ] 之间放置一个空格
    • 由于某种原因,我无法在 48 小时内将我的答案标记为答案,但是您的答案更加完整,因此我将其标记为答案。似乎很奇怪 - 将把它作为一个错误与微软一起提出(假设我可以弄清楚在哪里提出它!)因为这是无法预料的行为。感谢您的宝贵时间。
    • 你可以先尝试提出这个问题here
    【解决方案2】:

    这是一个 Windows PowerShell 问题:https://github.com/Azure/azure-cli/blob/dev/doc/use_cli_effectively.md#argument-parsing-issue-in-powershell。要解决此问题,请在 az 之后插入 --% 以强制 PowerShell 将行中的剩余字符视为文字。

    【讨论】:

      【解决方案3】:

      答案显然是在)] 之间放置一个空格,所以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 消息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-08
        • 1970-01-01
        • 1970-01-01
        • 2014-01-16
        • 2019-06-29
        • 1970-01-01
        相关资源
        最近更新 更多