2012-03-27 17 views
37

特定のグループのユーザーを表示するには検索フィルターが必要です。LDAP特定のグループのすべてのユーザーを一覧表示するクエリ

私は次のことを試してみた:

(& 
    (objectCategory=user) 
    (memberOf=MyCustomGroup) 
) 

と、この:

(& 
    (objectCategory=user) 
    (memberOf=cn=SingleSignOn,ou=Groups,dc=tis,dc=eg,dc=ddd,D‌​C=com) 
) 

しか持っていない、私はそれを修正する助けてください。

答えて

55

memberOf(AD内)はdistinguishedNamesのリストとして格納されます。

(&(objectCategory=group)(cn=myCustomGroup)) 

と属性distinguishedNameを返す:あなたはまだあなたがそれを検索することができ、識別名を持っていない場合

(&(objectCategory=user)(memberOf=cn=MyCustomGroup,ou=ouOfGroup,dc=subdomain,dc=domain,dc=com)) 

:あなたのフィルターのようなものである必要があります。大文字小文字が問題になる

+1

ou = ouOfGroupとは何ですか? –

+6

通常、Active Directoryには、構造を含む多数の組織単位があります。グループのデフォルトのルートOUはグループです。おそらく、cn = MyCustomGroup、ou = Groups、dc = subdomain、dc = domain、dc = comなどが役に立つでしょう。 グループ(&(objectCategory = group)(cn = MyCustomGroup))に対してLDAP検索を行い、結果セットにdistinguishedName属性を含めることをお勧めします。それはあなたの別のクエリで使用する文字列を正確に教えてくれるでしょう – Kodra

+0

私はあなたが言ったことをしましたが、次のように使用して結果が戻っていません:(&(objectCategory = user)(memberOf = cn = SingleSignOn、ou = Groups、dc = ds = ddd = ddd、DC = com) –

9

Active Directoryユーザーの場合、これを行う別の方法は、すべてのグループがOU=Groups,DC=CorpDir,DC=QA,DC=CorpNameに格納されていると仮定すると、クエリ(&(objectCategory=group)(CN=GroupCN))を使用することです。これは、メンバーが1500人未満のすべてのグループでうまくいくでしょう。大規模なADグループのすべてのメンバーを一覧表示する場合は、同じクエリが機能しますが、一度に1500レコードずつすべてのメンバーを取得するには、ranged retrievalを使用する必要があります。

遠隔検索を実行するためのキーは、次の構文を使用して属性内の範囲を指定することです。属性; range = low-high。したがって、メンバーが3000人のADグループのすべてのメンバーを取得するには、先にmember;range=0-1499属性が返されるように質問し、member;range=1500-2999属性の場合は上記のクエリを実行します。

+0

'(CN = GroupCN)'を指定するのを忘れないでください。私はすべてのグループを要求しようとしましたが、これを指定するまでは動作しませんでした。また、範囲を指定するときにアスタリスクを使用することもできます: 'member; range = 1500- *' - それもうまくいきます。 – Stalinko

関連する問題