【问题标题】:How can I get a list of AD user groups along with AD user with Microsoft Graph SDK如何使用 Microsoft Graph SDK 获取 AD 用户组列表以及 AD 用户
【发布时间】:2021-03-12 19:41:20
【问题描述】:

代码:

            var users = await graphClient.Users
            .Request()
            .Filter("startswith(userPrincipalName, '" + userPrincipalName + "')")
            .Select(u => new { u.Id, u.OtherMails, u.DisplayName, u.UserPrincipalName, u.MemberOf })
            .GetAsync();

为 MemberOf 返回一个空值。我知道我可以做一个后续:

var groups = await graphClient.Users[user.Id].MemberOf.Request().GetAsync();

但我宁愿返回包含所有信息的 Microsoft.Graph.User 类类型。

【问题讨论】:

  • 据我所知,你不能。我这样做并使用了两个查询。
  • 嗨@Crowcoder,如果您在后续查询中获取组,您能否以某种方式将它们添加到检索到的用户对象中?
  • 您可以创建自己的类,其中包含您想要从两个结果中获得的所有属性,并将数据映射到实例。
  • 我希望避免这种情况,执行以下操作但无法获得正确的代码: var groups = await graphClient.Users[user.Id].MemberOf.Request().GetAsync( ); var memberOf = new User().MemberOf; foreach (var group in groups) { memberOf.Add(group); } user.MemberOf = memberOf;
  • 您好,如果发布的答案解决了您的问题,请单击复选标记将其标记为答案。这样做可以帮助其他人找到他们问题的答案。见meta.stackexchange.com/questions/5234/…

标签: c# active-directory microsoft-graph-api microsoft-graph-sdks


【解决方案1】:

memberOf 不是属性而是关系,您可以使用扩展查询参数获取关系的数据。请参阅下面的 API 调用及其结果。

https://graph.microsoft.com/v1.0/users?$filter=startswith(userPrincipalName,'Shiva@nishantsingh.live')&$select=id, displayName, memberOf&$expand=memberOf

所以,使用类似这样的代码。

var users = await graphClient.Users
            .Request()
            .Filter("startswith(userPrincipalName, '" + userPrincipalName + "')")
            .Select(u => new { u.Id, u.OtherMails, u.DisplayName, u.UserPrincipalName, u.MemberOf })
            .Expand(d => d.memberOf)
            .GetAsync();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多