从AD组获取电子邮件地址列表

3

如果我有一个活动目录组的名称,如何获取成员列表或者他们的电子邮件地址?

2个回答

8
void Main()
{
    string groupName = "somegroup";
    string domainName = "somedomain";

    using(PrincipalContext ctx = new PrincipalContext(ContextType.Domain, domainName))
    {
        using(GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, groupName))
        {
            var sams = from x in grp.GetMembers(true) select new {x.SamAccountName, };
            var users = from sam in sams.Distinct()
                let usr = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, sam.SamAccountName)
                select new { usr.SamAccountName, usr.DisplayName, usr.EmailAddress};
            //do something with users...
        }
    }
}

这很好用!我可以获取用户信息,但是我看不到每个用户的电子邮件地址。我该如何获取每个成员的电子邮件地址? - Jerry
1
这就是了。当然,循环遍历数据的方法有很多种。重要的是,您可以通过SamAccountName获取UserPrincipal。UserPrincipal具有您想要的数据。 - Roy Ashbrook

1

1
对于 .NET 3.5 及更高版本,您应该开始使用 System.DirectoryServices.AccountManagement,它具有更好、更易于使用的接口(PrincipalContextUserPrincipal),这样使用起来更加高效。DirectoryEntry 是非常低级且难以使用的。 - marc_s

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接