LDAP Active Directoryを使用していて、すべてのユーザーを一覧表示しようとしています。私は完璧に機能するこのフィルターを持っています:
(&(objectclass=user)(|(memberOf=...)(memberOf=...)...)(|(userprincipalname=...)(displayname=...)))
残念ながら、ADにはオブジェクトクラス「user」のコンピューターユニットやその他のデバイスも存在するため、以前のフィルターでは、すべてのユーザー、コンピューター、デバイス、部屋などを取得しました。
これらのコンピューターとデバイスにはオブジェクトクラス"computer"もあるため、実際のユーザーのみを一覧表示するには、objectclass!="computer"でフィルターを拡張する必要があります。これまで私はこれらのフィルターを試しましたが、どれも機能していません(データは返されません!):
(&(objectclass=user)(!objectclass=computer)(|(memberOf=...)(memberOf=...)...)(|(userprincipalname=...)(displayname=...)))
(&(objectclass=user)(!(objectclass=computer))(|(memberOf=...)(memberOf=...)...)(|(userprincipalname=...)(displayname=...)))
(!(objectclass=computer))(&(objectclass=user)(|(memberOf=...)(memberOf=...)...)(|(userprincipalname=...)(displayname=...)))
(!objectclass=computer)(&(objectclass=user)(|(memberOf=...)(memberOf=...)...)(|(userprincipalname=...)(displayname=...)))
(実際のユーザーはオブジェクトクラス「コンピューター」を持っていません)。
私はPHPldap実装を使用しているので、ldap_search()
メソッドを使用しています。
「等しくない」構文が見つかりました。例: http://technet.microsoft.com/en-us/library/aa996205%28EXCHG.65%29.aspxまたはここ:http : //msdn.microsoft.com/ en-us / library / aa746475%28v = vs.85%29.aspx
DN内の(!CN = Computers)でユーザーをフィルタリングしようとすることもできますが、私にとってはより論理的であるため、最初に(!objectclass = computer)をフィルタリングしたいと思います。
objectclass!= "computer"式の正しい構文は何ですか?