我正在尝试通过从AD中提取OU名称和电话号码来创建电话目录。当搜索当前OU中是否填写了电话字段,并且该OU具有也包含电话字段的子OU时,也会返回这些用户帐户。例如:
USA
---德克萨斯
---佛罗里达
---纽约
我正在尝试查找所有在美国OU中填写了电话字段的用户,但它正在返回来自德克萨斯州,佛罗里达州和纽约的用户。有没有办法限制LDAP搜索的深度?
我正在使用c#而我当前的过滤器来查找用户只是
(及(objectClass的=用户)(objectCategory =人))
非常感谢任何帮助!
答案 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();
}
}
}