我正在使用System.DirectoryServices.DirectorySearcher为用户遍历Active Directory。在大多数情况下,这很好。代码大致如下:
Ldapconnection conn = CreateConnection(...);
System.DirectoryServices.DirectorySearcher searcher = new System.DirectoryServices.DirectorySearcher();
searcher.SearchScope = System.DirectoryServices.SearchScope.Subtree;
foreach (System.DirectoryServices.SearchResult result in searcher.FindAll()) {
}
出于某种原因,这并不总是完全遍历树。如果我指定searchroot指向缺少的子树,它会导入该子树。
我错过了什么吗?
答案 0 :(得分:2)
是否停止了1000名用户?我相信AD默认设置为仅返回1000个对象。
答案 1 :(得分:1)
如果在遇到问题行为的情况下SearchResultCollection的计数为1000,请尝试将DirectorySearcher上的PageSize属性设置为1000.
Ldapconnection conn = CreateConnection(...);
DirectorySearcher searcher = new System.DirectoryServices.DirectorySearcher();
searcher.SearchScope = System.DirectoryServices.SearchScope.Subtree;
searcher.PageSize = 1000;
foreach (System.DirectoryServices.SearchResult result in searcher.FindAll()) { }
答案 2 :(得分:1)
请参阅this similar question的已接受答案以获得解释。