Как использовать фильтр с приложением az ad для массового удаления - PullRequest
1 голос
/ 22 мая 2019

Я пытаюсь удалить множество приложений, имеющих похожее свойство, с помощью AZ AD CLI. Я не могу найти хороших примеров на --filter

Попытка сделать что-то вроде этого:

ad az app list --filter (displayName like 'stack') | ad az app delete

Любые указатели очень ценятся.

Ответы [ 2 ]

2 голосов
/ 23 мая 2019

Вы можете использовать --filter, как это

az ad app list --filter "startswith(displayName,'MyCommonPattern')"

Вышеупомянутая команда может дать вам немного json в выводе.

Вы можете свести его к только appIds или как вам нужно, используя --query, как это

az ad app list --filter "startswith(displayName,'RohitCommonPattern')" --query '[].appId'

Пример вывода

[
  "b5exxxc4-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "f13xxxa5-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
]

Я показал этот пример, используя startswith, но вы также можете использовать другие операторы, такие как eq, any для коллекций, логические операторы, такие как and, or. Посмотрите ссылку, относящуюся к API-интерфейсу Azure AD Graph, для получения дополнительных примеров.

Еще одна вещь, которую я попробовал, но, вероятно, не поддерживается, это contains

Дополнительная информация

  • --filter принимает фильтр OData согласно Microsoft Docs - az ad список приложений
  • API-интерфейс Azure AD Graph, вероятно, будет использоваться за кулисами для работы со списком приложений, поэтому, я думаю, вы могли бы прочитать о фильтрации и примерах здесь. Поддерживаемые параметры запроса - API-интерфейс Azure AD Graph
  • Вот общая спецификация, хотя не все может быть реализовано за кадром.

    ПРИМЕЧАНИЕ. Я специально упомянул более старый API-интерфейс Azure AD Graph https://graph.windows.net, а не более новый Microsoft Graph API https://graph.microsoft.com, поскольку API-интерфейсы, связанные с приложением, все еще находятся в стадии бета-тестирования для Microsoft Graph API.

0 голосов
/ 24 мая 2019

Чтобы следовать этому буквально безупречному ответу Рохита, я добавил быстрый BASH-скрипт для выполнения моего цикла:

for fn in `az ad app list --filter "startswith(displayName, 'Azure Stack')" --query '[].appId'`; do az ad app delete --id $fn; done
...