0

私は顧客の Active Directory を扱っていますが、これには多くの粗雑さが含まれています。空の givenName 属性と sn 属性を持つ何百ものユーザーがいます。空の sn または空の givenName を持つレコードをクエリ結果からフィルタリングしたいと思います。これらのレコードはアプリケーションで処理できないためです。

これは私の要件に従って機能しますが、それを行うためのより良い方法が必要だと思います:

(&(objectClass=User)(|(!(!(sn=*))))(!(!(givenName=*)))))

LDAPクエリでこれを達成するためのより明確で簡潔な方法はありますか?

4

2 に答える 2

2

sngivenName上位のname属性として、構文の属性がありDirectoryStringます。つまり、構文は1.3.6.1.4.1.1466.115.121.1.15です。構文の属性はDirectoryStringnull にすることはできません。つまり、a にDirectoryString は少なくとも 1 文字が必要です。

フィルターsn=*presentフィルターです (部分文字列や正規表現ではありません)。つまり、属性が存在しない場合、エントリは可能な検索結果から除外されsnます (存在する場合は、少なくとも 1 文字が必要です)。についても同じですgivenName=*

より単純なフィルターは、検索要求に返される属性のリストに次のものが含まれる場合が'(&)'あり@Userます:それが返されます。返されるエントリ数が多い場合は、Simple Paged Results Request Control を使用して、返されるエントリ数をより管理しやすい値に調整します。UsersngivenName

または... Active Directory が LDAP に準拠しておらず、inetOrgPersonobjectClass とその属性の構文を正しくサポートしておらず、属性に空の値またはnull属性値を許可している可能DirectoryString性がありますが、Microsoft がそうではない製品を提供することは想像できません。 LDAP 準拠。

こちらもご覧ください

于 2013-02-24T13:19:08.120 に答える
0

(!(!(givenName=*))) = (!givenName=*)

https://technet.microsoft.com/en-us/library/ee198810.aspx

于 2015-04-30T14:57:11.647 に答える