获取Active Directory组中的所有用户

本文关键字:用户 Active Directory 获取 | 更新日期: 2023-09-27 18:07:18

我正在尝试获取属于Active Directory中某个组的所有用户。我想将结果显示为站点用户选择的下拉菜单。这是我目前所看到的:

public IEnumerable<KeyValuePair<string, string>> GetAllMembers(string group)
{
    var domainContext = new PrincipalContext(ContextType.Domain);
    var group = GroupPrincipal.FindByIdentity(domainContext, group);
    return from principal in @group.Members select new KeyValuePair<string, string>(/* need to fill in key and value */);
}

我的问题是,我正在开发活动目录之外,所以还不能真正测试它(长话短说,不要问)。我想在将其部署到测试环境中时最大化成功的机会。

我的问题是:如果我希望键值对包含登录用户名(key, ex: "DOMAIN'darkoz")和用户真实姓名(value, ex: "Darko Z"),我如何获得这些?Principal对象至少有5个属性,其中有Name这个词,所以我不确定哪个是哪个。

附加问题:这是实现我的目标的一种普遍接受的方式吗?我意识到这是一个非常简单的问题,但由于我对Active Directory缺乏了解,如果有更好的方法来做到这一点,我不会感到惊讶。这个工作将运行在一个帐户,不是管理员吗?

获取Active Directory组中的所有用户

解决方案如我所料:

public IEnumerable<KeyValuePair<string, string>> GetAllMembers(string group)
{
    var domainContext = new PrincipalContext(ContextType.Domain);
    var groupPrincipal = GroupPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, group);
    return from m
           in groupPrincipal.Members 
           select new KeyValuePair<string, string>(m.SamAccountName, m.Name);
}

,其中SamAccountName给出用户登录名,Name是实际名称

我会阅读之前的类似问题来回答您的两个问题,关于最佳实践以及如何读取accountname和全名:从AD域获取所有用户

无论如何,从微软论坛:

static void Main(string[] args)
{
    string groupName = "Domain Users";
    string domainName = "";
    PrincipalContext ctx = new PrincipalContext(ContextType.Domain, domainName);
    GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, groupName);
    if (grp != null)
    {
         foreach (Principal p in grp.GetMembers(false))
            {
                Console.WriteLine(p.SamAccountName + " - " + p.DisplayName);
            }

        grp.Dispose();
        ctx.Dispose();
        Console.ReadLine();
    }
    else
    {
        Console.WriteLine("'nWe did not find that group in that domain, perhaps the group resides in a different domain?");
        Console.ReadLine();
    }
}

source:获取c#中Active Directory用户列表