Я хочу отфильтровать вывод команды Azure CloudShell az ad sp list, который выводит массив JSON, например, путем фильтрации до Publisher Name =" ACME ". Все команды z поддерживают аргумент --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
Но когда я комбинирую нулевой фильтр с фильтром содержит, я все равно получаю сообщение об ошибке:
az ad sp list --query "[?publisherName!='null' && contains(publisherName,'ACME')]" --all
Я предполагаю, что фильтр JMESPath не поддерживает короткое замыкание логических операций. Однако я не нашел никаких заявлений об этом ни на http://jmespath.org/, и в поиске в Google.
Я не знаю, как выполнить шлейфовое соединение или конвейерную цепочку с помощью предложения --query команды Azure az, чтобы применить два фильтра по отдельности.
Любое предложение, как добиться моего отфильтрованного вывода?