租户可以拥有多个分配的域,并且所有用户都直接在租户中进行组织。要获得所有用户的列表,您只需询问:
https://graph.microsoft.com/v1.0/users
但我想通过用户主体名称中使用的域过滤列表。在阅读explanation at MSDN和developer documentation之后,似乎无法做到这样的事情。
您只能检查(不)相等或者字符串是否以某些文本开头,但是无法检查字符串是否以特定内容结束。
我希望会有类似的东西,但两者都不是:
https://graph.microsoft.com/v1.0/users?$filter=endsWith(userPrincipalName, 'mydomain.com')
https://graph.microsoft.com/v1.0/users?$filter=userPrincipalName eq '*@mydomain.com'
https://graph.microsoft.com/v1.0/users?$filter=userPrincipalName eq '.*@mydomain.com$'
https://graph.microsoft.com/v1.0/users?$filter=domain eq 'mydomain.com'
有没有人知道如何过滤特定域的用户列表?
答案 0 :(得分:2)
Microsoft Graph目前不支持endsWith
或contains
。
如果这是您希望定期搜索的内容,则可以添加定位user
资源的Schema Extension以保留用户的电子邮件域。
虽然最初的人口是工作密集型的,但随着时间的推移,可以通过/delta
端点由tracking changes to users管理。您可以定期提取/delta
并仅更新受影响的user
资源。
答案 1 :(得分:1)
endsWith 最近开始工作了。
图形浏览器示例:
https://graph.microsoft.com/v1.0//users?$count=true&$filter=endsWith(userPrincipalName,'@example.com')&$select=id,userPrincipalName
Graph.NET SDK:
var request = graphServiceClient.Users
.Request()
.Header("ConsistencyLevel", "eventual")
.Filter("endswith(userPrincipalName,'@example.com')")
.Select(x => new { x.Id, x.UserPrincipalName })
.OrderBy("userPrincipalName");
request.QueryOptions.Add(new QueryOption("$count", "true"));
var result = await request.GetAsync();
另见 https://docs.microsoft.com/en-us/graph/api/user-list?view=graph-rest-1.0&tabs=csharp 处的示例 5(目前文档中的 C# 示例不完整)