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

如何获取Microsoft租户内用户的所有SharePoint组成员身份列表?

最优实现方案:基于Microsoft Graph API的高效查询

不用逐个遍历站点检查组成员,直接通过Microsoft Graph API的专属端点和批量能力,就能高效获取用户所属的所有SharePoint组,具体方法如下:

  • 直接查询用户关联的SharePoint组
    使用Graph API的用户组成员关系端点,配合筛选条件精准定位SharePoint专属组:

    GET /users/{user-id}/memberOf/microsoft.graph.group?$filter=resourceProvisioningOptions/any(x:x eq 'SPO')
    

    其中{user-id}可以是用户的UPN(如user@contoso.com)或Object ID,筛选条件resourceProvisioningOptions/any(x:x eq 'SPO')会过滤出属于SharePoint站点的组(排除Teams、Azure AD等其他服务的组)。

  • 批量处理多用户查询
    如果你的用户列表数量较多,用Graph的批量请求打包多个用户的查询,减少HTTP请求次数。示例批量请求结构:

    {
      "requests": [
        {
          "id": "1",
          "method": "GET",
          "url": "/users/user1@contoso.com/memberOf/microsoft.graph.group?$filter=resourceProvisioningOptions/any(x:x eq 'SPO')"
        },
        {
          "id": "2",
          "method": "GET",
          "url": "/users/user2@contoso.com/memberOf/microsoft.graph.group?$filter=resourceProvisioningOptions/any(x:x eq 'SPO')"
        }
      ]
    }
    

    一次批量请求最多可包含20个独立查询,大幅提升处理效率。

  • 增量更新优化(可选)
    如果需要定期同步数据,使用Delta查询获取上次查询后的变化,避免每次全量扫描:

    GET /users/{user-id}/memberOf/microsoft.graph.group/delta?$filter=resourceProvisioningOptions/any(x:x eq 'SPO')
    

    首次查询会返回所有数据和一个@odata.deltaLink,后续请求该链接即可只获取新增或变更的组信息。

  • 权限要求
    确保执行查询的账号或应用拥有Group.Read.All和User.Read.All权限(应用权限适合后台批量处理,委托权限适合交互式操作)。

这种方法的核心优势是直接利用Graph的底层关联数据,避免了遍历所有站点的高成本操作,时间复杂度从O(站点数×组数×成员数)降到O(用户数),效率提升非常明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:42:37