人気ブログランキング | 話題のタグを見る
(.Net,ADSI)ADSIでドメインアカウント数が1000件超えると取得できない
.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:
by jehoshaphat | 2010-06-27 21:19 | .Net開発


<< PacketiX のオープンソ... SSIってのがあったのか… >>