1

Active Directory から属性を持つすべてのユーザーを取得したいと思います。チェックした多くのトピックには、Linq から LDAP +ここにリンクの説明を入力するなどがあります

しかし、すべてが複雑に思えます。

私はこれから始めました:

public SearchResultCollection GetAllUsrs()
     {
         var dirEntry = new DirectoryEntry(string.Format("LDAP://{0}/{1}", "x.y.com", "DC=x,DC=y,DC=com"));
         var searcher = new DirectorySearcher(dirEntry)
         searcher.Filter = "(&(&(objectClass=user)(objectClass=person)))";
         searcher.PageSize = 999;

         return searcher.FindAll();

     }

Active Directory は一度に 1000 レコードしか返さないため、ページングを使用するにはどうすればよいですか? + 属性を指定するにはどうすればよいですか?

問題: コンソール アプリケーションを使用して、最大 6 万人のユーザーを含むドメインを照会したい 属性を指定したい パフォーマンスは非常に重要です。これを達成するための最良の方法を教えてください。

4

2 に答える 2

2

LINQ to LDAPでそれを行う方法は次のとおりです。

using (var connection = new LdapConnection("x.y.com"))
{
     using (var context = new DirectoryContext(connection))
     {
          List<IDirectoryAttributes> users = context
               .Query("DC=x,DC=y,DC=com")
               .Where("(&(objectClass=user)(objectClass=person))")
               .InPagesOf(1000);
     }
}
于 2013-01-18T05:06:27.633 に答える
2

ページングは​​必要ありません。AD は 1000 を超えるオブジェクトを返します。PageSize を 0 のままにして、必要に応じて SizeLimit を設定します。不明な場合は int.MaxValue ;) を使用してください。

于 2013-01-11T21:31:40.187 に答える