我目前正在尝试过滤特定标签
包含值匹配的位置,但是az资源列表--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 resources list
上。
任何额外的见解或正确方向的指示将不胜感激
最佳答案
在示例中添加符号 [ ] 后,您可以按预期运行命令。正确的话应该是这样的:
az resource list \
--resource-group "${resource_group}" \
--location "${location}" \
--query "[?contains([tags.Schedule], 'NOT_SET')].name"
我实验室的输出如下:
关于azure - 使用 az-cli 查询未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51356596/