Active directory 从ACCIVE目录组获取用户

Active directory 从ACCIVE目录组获取用户,active-directory,Active Directory,我创建了一个Active Directory域名“ADDOMAIN2”,其组名为“CommonUsers”,有8个用户。但当我对“CommonUsers”组中的用户进行目录搜索时,它返回的结果为零。她的密码是我的 DirectorySearcher searcher = new DirectorySearcher(); DirectoryEntry directoryEntry = new DirectoryEntry(string.Format("LDAP://{

我创建了一个Active Directory域名“ADDOMAIN2”,其组名为“CommonUsers”,有8个用户。但当我对“CommonUsers”组中的用户进行目录搜索时,它返回的结果为零。她的密码是我的

       DirectorySearcher searcher = new DirectorySearcher();
        DirectoryEntry directoryEntry = new DirectoryEntry(string.Format("LDAP://{0}", "ADDOMAIN2"), "Administrator", "p@S$w0rd");
        string dnPath = directoryEntry.Properties["distinguishedName"].Value.ToString();

       // string path = string.Format("LDAP://{0}/{1}{2}", "ADDOMAIN2", "", dnPath);
        string path = "LDAP://ADDOMAIN2/CN=CommonUsers,DC=ADDomain2,DC=ADDomain01,DC=WaveDomain";
        directoryEntry.Path = path;
        searcher.SearchRoot = directoryEntry;
        searcher.Filter = "(&(objectCategory=person)(objectClass=user))";
        SearchResultCollection rs = searcher.FindAll();
你知道这里怎么了吗


Thanx

尝试使用一些外部LDAP浏览器(如旧的免费版本2.6)检查您的查询字符串是否真正指向正确的位置。

DirectorySearcher不用于查找组内的用户。它用于查找基本路径下的对象。由于没有用户对象放置在您的广告组对象下,因此您将找不到任何内容

在大多数情况下,您可以从广告组的成员属性中找到广告组中的用户对象。请注意,广告组可以包含组或用户。因此,那里的一些主菜可能是集体的。在某些情况下,成员属性不包含AD组或AD用户,而是包含外部安全主体。如果您的用户来自另一个林,则会发生这种情况。主要群体的处理方式也有所不同。即使“域用户”是AD中大多数用户的主要组,其成员属性也不包含任何内容。还有很多其他的奇怪之处使得枚举广告组对象变得非常困难

幸运的是,在.NET3.5中,Microsoft在框架中提供了一些有用的类来为您完成这些繁琐的工作。退房

要获得一些快速示例,您可以查看此代码项目

你的代码应该是这样的

PrincipalContext context = new PrincipalContext(ContextType.Domain, "yourdomain.com");
GroupPrincipal groupPrincipal = GroupPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "Domain Users");
foreach (Principal principal in groupPrincipal.GetMembers(false))
{
     Console.Out.WriteLine(principal.DistinguishedName);
}
Console.In.ReadLine();

你核对我的答案了吗?有帮助吗?有什么评论吗?