You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效查询Microsoft Graph中指定前缀组的所有用户?

高效获取指定前缀组下所有用户的方案

方案1:单请求带$expand拉取组及成员

直接在组查询请求中添加$expand=members参数,一次性获取所有目标组及其成员,避免多次请求:

GET https://graph.microsoft.com/v1.0/groups?$filter=startswith(displayName, 'idm2cbd_app_')&$expand=members

如果组内成员较多,会触发分页,只需处理响应中的@odata.nextLink即可拉取完整数据,相比循环22次请求,能大幅减少HTTP交互次数。

方案2:批量请求(Batch Request)

若$expand因数据量过大触发限制,可采用批量请求,仅需一次HTTP调用完成所有组的成员查询:

  1. 先执行一次组查询,拿到所有目标组的ID
  2. 构造如下POST请求(Content-Type设为application/json):
{
  "requests": [
    {
      "id": "1",
      "method": "GET",
      "url": "/groups/{group-id-1}/members"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/groups/{group-id-2}/members"
    },
    // 依次填入剩余20个组的ID对应的查询项
  ]
}
  1. 解析响应中每个请求的结果,汇总所有用户即可

方案3:跨组用户筛选(需Azure AD Premium许可)

如果你的租户拥有Azure AD Premium权限,可以直接查询属于这些组的所有用户,无需分别处理每个组:

GET https://graph.microsoft.com/v1.0/users?$filter=memberOf/any(g: g/id in ('{group-id-1}', '{group-id-2}', ..., '{group-id-22}'))

这个请求直接返回所有目标组下的用户,性能最优,22个组的ID数量不会触发URL长度限制,可放心使用。

注意事项

  • 所有请求需确保应用已获得GroupMember.Read.All或Directory.Read.All等对应权限
  • 优先选择方案1,实现成本最低;若遇到数据量限制,再切换到方案2或3

内容的提问来源于stack exchange,提问作者Jan Rojowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 09:08:17