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

如何通过Azure Graph API获取Azure AD测试目录的一级元素?

使用Azure Graph API获取AD目录树的一级元素方案

核心思路

目录树的一级元素指不属于任何父组的用户或组,这类对象的特征是未被添加到其他组的成员列表中。通过Azure Graph API的过滤条件可直接筛选出这类对象,无需循环遍历所有组再做排除,能大幅提升大目录场景下的扩展性。

具体API调用方法

  1. 获取所有顶层组
    用过滤条件筛选出不属于任何组的组:

    GET https://graph.microsoft.com/v1.0/groups?$filter=not memberOf/any(g:true)
    

    该查询会直接返回所有无父组的顶层组,无需额外处理。

  2. 获取所有顶层用户
    同理,筛选出不在任何组内的一级用户:

    GET https://graph.microsoft.com/v1.0/users?$filter=not memberOf/any(g:true)
    
  3. 一次性获取混合的一级元素(组+用户)
    若需同时获取一级组和一级用户,可查询directoryObjects并过滤类型:

    GET https://graph.microsoft.com/v1.0/directoryObjects?$filter=(isof('microsoft.graph.group') or isof('microsoft.graph.user')) and not memberOf/any(g:true)
    

    返回结果包含组和用户的通用属性,可通过@odata.type字段区分对象类型。

层级信息的补充获取

如果需要同时获取一级元素的子节点(子组/成员),可结合$expand参数:

  • 获取顶层组及其直接成员:
    GET https://graph.microsoft.com/v1.0/groups?$filter=not memberOf/any(g:true)&$expand=members
    
  • 若目录规模较大,建议按需加载子节点:先获取一级元素列表,再对每个元素单独调用/{objectId}/members接口获取子节点,避免单次请求数据过载。

性能优化建议

  • 使用$select指定所需字段,减少数据传输量:
    GET https://graph.microsoft.com/v1.0/groups?$filter=not memberOf/any(g:true)&$select=id,displayName,description
    
  • 利用Graph API分页机制:默认单次返回100条数据,通过响应中的@odata.nextLink遍历所有结果,避免大目录下的请求超时问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 04:15:57