如何在Az广告应用中使用过滤器进行批量删除

时间:2019-05-22 17:49:41

标签: azure azure-active-directory azure-cli

我正在尝试删除许多具有AZ AD CLI相似属性的应用程序。 我在--filter

上找不到任何好的示例

尝试执行以下操作:

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

非常感谢任何指针。

2 个答案:

答案 0 :(得分:2)

您可以像这样使用--filter

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

上面提到的命令可能会在输出中给您很多json。

您可以使用--query将其简化为appId或所需的任何内容

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

样本输出

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

我已经展示了使用startswith的示例,但是您可以使用eqany等其他运算符进行集合,而使用and,{{1}等逻辑运算符}。请查看与Azure AD Graph API相关的链接以获取更多示例。

我尝试过但又可能不受支持的另一件事是or

更多信息

  • contains根据Microsoft Docs接受OData过滤器-az ad app list
  • Azure AD Graph API可能会在幕后用于处理应用程序列表,因此我想您可以在此处阅读有关过滤和示例的信息。 Supported Query Options - Azure AD Graph API
  • 这是一个通用规范,尽管并非所有事情都可以在幕后实现。

    注意:我有意提到较旧的Azure AD Graph API --filter,而不是较新的Microsoft Graph API https://graph.windows.net,因为与应用程序相关的API仍处于Microsoft Graph API的测试版中。

答案 1 :(得分:0)

要从Rohit的字面上完美的答案中解决这个问题,我添加了一个快速的BASH脚本来完成循环:

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