LDAP查询搜索深度问题

时间:2011-01-26 18:03:02

标签: c# active-directory ldap

我正在尝试通过从AD中提取OU名称和电话号码来创建电话目录。当搜索当前OU中是否填写了电话字段,并且该OU具有也包含电话字段的子OU时,也会返回这些用户帐户。例如:

USA

---德克萨斯

---佛罗里达

---纽约

我正在尝试查找所有在美国OU中填写了电话字段的用户,但它正在返回来自德克萨斯州,佛罗里达州和纽约的用户。有没有办法限制LDAP搜索的深度?

我正在使用c#而我当前的过滤器来查找用户只是

(及(objectClass的=用户)(objectCategory =人))

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

我假设您使用DirectorySearcher来执行LDAP查询。您可以通过将DirectorySearcher.SearchScope设置为SearchScope.OneLevel来限制在美国OU级别上的搜索。

这是一个看起来像

的样本
IEnumerable<DirectoryEntry> FindUsers(DirectoryEntry root)
{
    using (DirectorySearcher searcher = new DirectorySearcher(root))
    {
        searcher.Filter = "(&(objectClass=user)(objectCategory=person))";
        searcher.SearchScope = SearchScope.OneLevel;
        searcher.PageSize = 1000;
        foreach (SearchResult result in searcher.FindAll())
        {
            yield return result.GetDirectoryEntry();
        }
    }
}