我想过滤Azure CloudShell命令az ad sp list的输出,该命令输出JSON数组,例如通过过滤为Publisher Name =“ ACME”。所有az命令都支持--query参数,该参数接受JMESPath。
我有一个JMESPath过滤器:
az ad sp list --query "[?contains(publisherName,'ACME')]" --all
由于错误而失败:
In function contains(), invalid type for value: None, expected one of: ['array', 'string'], received: "null"
我对自己的JMESPath语法充满信心,因为一个非常相似的表达式可以正常工作:
az ad sp list --query "[?contains(displayName,'ACME')]" --all
我有一个可以正常工作的空过滤器:
az ad sp list --query "[?publisherName!='null']" --all
但是当我将null过滤器与contains过滤器结合使用时,仍然会出现错误:
az ad sp list --query "[?publisherName!='null' && contains(publisherName,'ACME')]" --all
我猜测JMESPath过滤器不支持boolean operations short circuit。但是,我没有在http://jmespath.org/上或通过谷歌搜索找到关于此的任何声明。
我不知道如何使用Azure az命令--query子句来菊花链或管道连接以单独应用两个过滤器。
任何建议如何实现我的过滤输出?
答案 0 :(得分:0)
--query "[? publisherName!='null']|[? contains(publisherName,'ACME')]" --all
答案 1 :(得分:0)