使用az-cli查询的行为与预期不符

时间:2018-07-16 07:25:37

标签: azure azure-cli azure-cli2

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

下面是我正在执行的示例:

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

根据上述内容,您可以看到资源上有一个名为Schedule的标记,并且我正在尝试识别哪些标记值为NOT_SET的Azure资源。

当不尝试对不是子对象的输入数据使用contains函数时,此方法可以很好地工作,例如,以下方法可以很好地工作:

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

我已经阅读了JMESPath文档,该文档没有显示我正在使用的特殊情况。在Google上跑来跑去也发现了一些可能性,例如; 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上。

我们将不胜感激任何其他见解或正确方向的指点

1 个答案:

答案 0 :(得分:1)

在示例中添加符号 [] 时,可以按预期运行命令。正确,它应该看起来像这样:

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

我的实验室中的输出如下:

enter image description here