如何获取指定名称Entra ID组的成员及其经理信息?
解决按组名获取Entra ID组成员及经理信息的问题
可行方案一:两步查询(先取组ID,再复用有效请求)
这种方法复用你已验证有效的组ID请求逻辑,仅新增动态获取组ID的步骤:
- 第一步:按组名查询目标组ID
发送请求:
该请求仅返回匹配组的ID字段,数据量极小,适合多租户场景动态获取。GET https://graph.microsoft.com/v1.0/groups?$filter=displayName eq 'Test group'&$select=id - 第二步:用获取到的组ID执行原有请求
将第一步拿到的groupId替换到你之前的有效请求中:
此请求会继续只返回用户类型的成员,并正确带出经理信息,避免非用户类型成员导致的报错。GET https://graph.microsoft.com/v1.0/groups/{groupId}/members/microsoft.graph.user/?$select=<memberAttrs>&$expand=manager($levels=max;$select=<managerAttrs>)
可行方案二:单次嵌套查询(直接按组名获取成员+经理)
你之前的请求失败,核心原因是未限定成员为microsoft.graph.user类型,且扩展manager的语法位置错误。正确的单次请求语法如下:
GET https://graph.microsoft.com/v1.0/groups?$filter=displayName eq 'Test group'&$expand=members/microsoft.graph.user($select=<memberAttrs>;$expand=manager($levels=max;$select=<managerAttrs>))&$select=displayName
关键语法说明:
members/microsoft.graph.user:限定只扩展组内的用户类型成员,过滤掉组、设备等无manager属性的成员类型,避免扩展失败。- 嵌套
$expand=manager(...)在microsoft.graph.user的扩展参数内:确保仅对用户类型成员扩展经理信息。 $select=<memberAttrs>和$select=<managerAttrs>:按需指定需要返回的成员、经理属性,减少冗余数据。$select=displayName:控制组本身仅返回名称字段,避免无关数据。
多租户MSP场景适配建议
- 无需硬编码组ID:两种方案均通过组名动态查询,每个租户用独立OAuth凭据查询自身租户内的目标组,适配多租户需求。
- 组名配置化:可在ServiceNow中按租户维护目标组名称映射表,由MSP控制配置,客户仅需维护组内成员,既满足MSP控制权要求,又避免客户误操作导致的许可证成本增加。
注意事项
- 权限要求:确保应用已被授予
Group.Read.All和User.Read.All的应用权限(多租户场景更适合应用权限,而非委派权限)。 - 分页处理:若组成员数量超过Graph API默认分页限制(100条),需处理响应中的
@odata.nextLink以获取完整数据。
内容的提问来源于stack exchange,提问作者JussiV
相关产品推荐
相关产品推荐

