.Net アプリで DirectoryEntry と SearchResultCollection を使ってActiveDirectory上のユーザを取得してるんですが、1000件を超えたアカウント情報が取得できません。
で、調べるとADSIの仕様のようですね。
解決策としては、DirectorySearcher.PageSize を指定するだけでいいようです。
ということで、下記のようにしたら問題なく1000件以上も取得できるようになりました。
DirectorySearcher drSearch = new DirectorySearcher(new DirectoryEntry("LDAP://dc/DC=domainname,DC=jp", "cn=administrator,DC=domainname,DC=jp", "password"));
// アカウントフィルターを設定 Userオブジェクトだけ取得するように
drSearch.Filter = "(ObjectCategory=user)";
//取得件数を明示的に1000件にする
drSearch.PageSize = 1000;
SearchResultCollection scn = drSearch.FindAll();
参考:
Hey, Scripting Guy!:すべてのユーザー アカウントを取得できないのはなぜですか
ActiveDirectory 取得エントリの最大数(SizeLimit)について - Windows Server Insider - @IT: