Microsoft Graph GetByIds支持查询参数($ select,$ filter),或在GetMemberGroups

时间:2017-09-11 22:12:38

标签: active-directory azure-active-directory microsoft-graph

GetMemberGroups 只返回组的“id”属性,afaik无法包含其他附加属性(我的猜测是因为它只搜索某种索引而不是实际遍历所有层次结构中的节点,当需要传递时才有意义)

一旦我有来自GetMemberGroups的ID,

DirectoryObjects.GetByIds 就会派上用场,但是这个会返回所有默认属性。如果我指定任何$ filter,例如,如果我知道我不需要displayName中具有特定前缀的组,或者$ select,因为我知道我只需要某些属性,则忽略任何这些查询参数。没有抛出错误,只是被忽略,所有对象都返回所有参数。

// this works (max 2046 results)
var groupIDs = await client.Users[userid].GetMemberGroups(false).Request().PostAsync()

// something like Expand or Include would be handy
// even if it is done separately in AD, at least we would save the roundtrip
client.Users[userid].GetMemberGroups(false).Request().Include("prop1,prop2").PostAsync()

// this works nicely with pagination, but both Select and Filter are ignored
var res = await client.DirectoryObjects.GetByIds(groupIDs.ToList(), new[] { "group" })
.Request().Select("id,displayName").Filter("startswith(displayName,'prefix')").PostAsync()

当您处理大型结果集()时,这种情况更有意义,并且您无法将值缓存太长时间,在这些情况下,它可能会浪费更多带宽。

还有其他选择可以达到类似的效果吗?或者关于是否有可能支持这一点的任何提示,在路线图上都是类似的吗? 也许@Dan Kershaw知道的更多,但如果同时我错过了一个已经存在的解决方案,那就很高兴使用它。

1 个答案:

答案 0 :(得分:1)

这看起来像一个新的功能请求 - 过滤和选择Microsoft Graph中的功能或操作。我们今天没有这个。目前唯一可用的选项是获取完整的设置,并进行客户端过滤/选择。

是否可以为此新功能创建user voice request

希望这有帮助,