【问题标题】:Querying not acting as expected with az-cli使用 az-cli 查询未按预期执行
【发布时间】:2018-07-16 07:25:37
【问题描述】:

我目前正在尝试过滤特定tag 包含匹配值的位置,但是az resource list --query "" 似乎不喜欢我正在做的事情。

我正在执行的示例如下:

az resource list \
--resource-group "${resource_group}" \
--location "${location}" \
--query "[?contains(tags.Schedule, 'NOT_SET')].name

根据上面你可以看到资源上有一个名为Schedule的标签,我正在尝试识别哪些Azure资源的标签值为NOT_SET

当不尝试对不是子对象的输入数据使用contains 函数时,这非常有效,例如以下非常有效:

az resource list \
--resource-group "${resource_group}" \
--location "${location}" \
--query "[?contains(name, 'myvm')].name

我浏览了 JMESPath 文档,该文档没有显示我在这里使用的特定案例。在谷歌上也有点跑来跑去确定了一些可能性,例如; Azure Citadel - CLI 2.0 JMESPATH,它确实给出了不同类型查询的示例

az vm list --show-details --output json --query "[?ends_with(storageProfile.osDisk.managedDisk.storageAccountType, 'LRS')]"

这确实有效,但它在 az vm list 上,而不是我正在查询的 az resource list

任何额外的见解或正确方向的指针将不胜感激

【问题讨论】:

    标签: azure azure-cli azure-cli2


    【解决方案1】:

    当您在示例中添加符号 [ ] 时,您可以按预期运行命令。正确的应该是这样的:

    az resource list \
    --resource-group "${resource_group}" \
    --location "${location}" \
    --query "[?contains([tags.Schedule], 'NOT_SET')].name"
    

    我实验室的输出如下:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-07
      • 2017-05-17
      • 2013-08-20
      • 2017-12-15
      • 2011-02-25
      • 2012-11-23
      相关资源
      最近更新 更多