Я хочу отфильтровать выходные данные из команды Azure CloudShell az ad sp list , которая выводит массив JSON, например, путем фильтрации по имени издателя = "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"
IЯ уверен в моем синтаксисе 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.
Я не знаю, как подключить цепочку или канал с помощью команды Azure az --query, чтобы применитьдва фильтра по отдельности.
Любое предложение, как добиться моего фильтрованного вывода?