我可以很容易地从azure活动目录中获取所有统一组,尤其是因为在the documentation中明确提到了该组:
GET https://graph.microsoft.com/v1.0/groups?filter=groupTypes/any(c:c+eq+'Unified')
您可以使用this query获取用户所属的所有组:
GET https://graph.microsoft.com/v1.0/users/{user-id}/memberOf
现在,让我们结合这两个查询来获取用户所属的所有统一组:
GET https://graph.microsoft.com/v1.0/users/{user-id}/memberOf?filter=groupTypes/any(c:c+eq+'Unified')
您会回来的:
HTTP Status Code 400
{
"error": {
"code": "BadRequest",
"message": "Filter not supported.",
"innerError": {
"request-id": "{request-id}",
"date": "2018-07-06T07:29:52"
}
}
}
好的,因此组支持lambda查询,因此让我们对其进行扩展并增强过滤器以对成员进行过滤:
GET https://graph.microsoft.com/v1.0/groups?$filter=groupTypes/any(c:c+eq+'Unified') and members/any(u:u/id+eq+'{user-id}')
但这会返回
HTTP Status Code 400
{
"error": {
"code": "Request_UnsupportedQuery",
"message": "Unsupported Query.",
"innerError": {
"request-id": "{request-id}",
"date": "2018-07-06T07:41:47"
}
}
}
那么,为什么不支持任何一种功能(在Beta中也不支持)?
答案 0 :(得分:1)
请尝试使用以下查询获取用户所属的所有统一组-
private void compactFiles() throws Exception {
Set<String> events = this.listSubDirectoryNames(inputDir);
ForkJoinPool customThreadPool = new ForkJoinPool(4); // you might need to adjust this value to find optimal performance
customThreadPool.submit(() -> events.parallelStream().forEach(event -> writeEvent(event, eventSchemaMap.get(event), this.configuration))).get(); //Due to how ForkJoin pool works tasks will be submitted to the same pool which was used to execute parent task
}
答案 1 :(得分:1)
List memberOf Rest API不支持那么,为什么不支持任何一种功能(在Beta中也不支持)?
$ filter。我们可以从List memberOf Rest API文档中获取该信息。
此方法支持OData查询参数以帮助自定义响应。 $ filter 不受支持。
从List Group Rest API,我们可以知道没有任何与用户相关的属性。 因此,您尝试不支持对成员进行过滤。
正如SaurabhSharma-MSFT提到的那样,您可以使用以下方式来做到这一点。
GET https://graph.microsoft.com/v1.0/Users/{user-id}/memberOf/$/microsoft.graph.group?$filter=groupTypes/any(c:c+eq+'Unified')