【问题标题】:Get list of email addresses from ADGroup从 ADGroup 获取电子邮件地址列表
【发布时间】:2013-03-11 20:40:13
【问题描述】:

如果我有一个 Active Directory 组的名称,我如何获得成员列表或其电子邮件地址?

【问题讨论】:

    标签: c# active-directory


    【解决方案1】:
    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...
            }
        }
    }
    

    【讨论】:

    • 这很好用!我可以获取用户信息,但看不到每个用户的电子邮件地址。如何获取每个成员的电子邮件地址?
    • 你去。当然,有多种方法可以循环浏览数据。重要的是您可以通过 SamAccountName 获取 UserPrincipal。 UserPrincipal 有你想要的数据。
    【解决方案2】:

    【讨论】:

    • 对于 .NET 3.5 和更新版本,您应该开始考虑使用 System.DirectoryServices.AccountManagement,它具有更好、更易于使用的界面(PrincipalContextUserPrincipal),使用效率更高. DirectoryEntry 是非常低级的并且出了名的难以使用....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2011-03-27
    • 2013-04-18
    相关资源
    最近更新 更多