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

如何通过Graph获取包含来宾成员的Microsoft 365组?

解决通过Microsoft Graph检索包含来宾成员的Microsoft 365组的问题

首先明确:你使用的/beta/groups?$filter=members/any(x:x/userType eq 'Guest')请求报错,是因为Microsoft Graph的groups端点不支持对导航属性members直接进行$filter操作,OData的any/all运算符无法作用于groups资源的members导航属性,这是当前API的限制。

无需客户端筛选的实现方式有两种:

方法1:使用目录对象端点进行筛选

利用directoryObjects端点,它支持对组的members导航属性进行筛选,请求示例如下:

GET /beta/directoryObjects/microsoft.graph.group?$filter=members/any(m:m/userType eq 'Guest')&$select=id,displayName,description,groupTypes

注意事项:

  • 需要添加请求头ConsistencyLevel: eventual,否则会返回筛选不支持的错误
  • 所需权限:Directory.Read.All(应用权限或委派权限)

方法2:通过来宾用户反向关联组

先检索所有来宾用户,同时展开他们所属的组,再对组进行去重:

  1. 获取所有来宾用户并关联所属组:
GET /beta/users?$filter=userType eq 'Guest'&$select=id,displayName&$expand=memberOf($select=id,displayName,groupTypes)
  1. 从返回的每个用户的memberOf集合中提取组信息,通过id去重即可得到包含来宾的所有组。
    此方法的优势是权限要求更灵活,仅需User.Read.All和Group.Read.All权限。

如果你使用PowerShell的Microsoft Graph模块,可以用以下命令实现方法2的逻辑(自动去重):

Get-MgUser -Filter "userType eq 'Guest'" -ExpandProperty MemberOf | Select-Object -ExpandProperty MemberOf | Select-Object Id, DisplayName, GroupTypes | Get-Unique -Property Id

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 15:15:45