3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

(.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: