如何使用Microsoft Graph Client枚举用户的组

问题描述 投票:0回答:1

我正在使用GraphHttpClient类来尝试和检索用户是Visual Studio Team Services中成员的所有组。我可以完全连接到VSTS并运行以下代码,但我经常会遇到VSTS内置帐户的错误。我不确定我做错了什么或如何纠正这一点,以便代码运行无例外。

循环所有用户并生成他们所属的组列表的最佳方法是什么?

GraphHttpClient graphClient = connection.GetClient<GraphHttpClient>();
PagedGraphUsers users = graphClient.ListUsersAsync().Result;

foreach (var user in users.GraphUsers)
{
    if (user.Origin.Equals("aad"))
    {                    
        var ent = graphClient.ListMembershipsAsync(user.Descriptor).Result.ToList();
        foreach (var graphMembership in ent)
        {
            var group = graphClient.GetGroupAsync(graphMembership.ContainerDescriptor).Result;

            Console.Out.WriteLine("{0},{1}",
                user.PrincipalName.PadRight(20),
                group.PrincipalName);
        }
    }
    else
    {
        Console.Out.WriteLine("{0},Service Accounts",
            user.DisplayName.PadRight(20));
    }
}

当我删除I​​F语句并让所有用户通过ListMememberhships时,我收到此错误:

Unhandled Exception: System.AggregateException: One or more errors occurred. ---> Microsoft.VisualStudio.Services.Graph.InvalidSubjectTypeException: acs``
c# azure-devops
1个回答
0
投票

描述符以acs开头是服务帐户,例如Hosted VS2017代理服务,TeamFoundationService。

所以你可以改变这样的条件:

if (!user.Descriptor.ToString().StartsWith("acs"))
© www.soinside.com 2019 - 2024. All rights reserved.