Tuesday, April 21, 2009

LDAP 查询基本知识

更多精彩请到 http://www.139ya.com

转自: http://www.cnblogs.com/xray2005/archive/2008/05/07/1187504.html

LDAP 查询基本知识
基本 LDAP 语法


=(等于)

此 LDAP 参数表明某个属性等于某个值的条件得到满足。例如,如果希望查找“名“属性为“John”的所有对象,可以使用:

(givenName=John)

这会返回“名”属性为“John”的所有对象。圆括号是必需的,以便强调 LDAP 语句的开始和结束。


&(逻辑与)

如果具有多个条件并且希望全部条件都得到满足,则可使用此语法。例如,如果希望查找居住在 Dallas 并且“名”为“John”的所有人员,可以使用:

(&(givenName=John)(l=Dallas))

请注意,每个参数都被属于其自己的圆括号括起来。整个 LDAP 语句必须包括在一对主圆括号中。操作符 & 表明,只有每个参数都为真,才会将此筛选条件应用到要查询的对象。


!(逻辑非)

此操作符用来排除具有特定属性的对象。假定您需要查找“名”为“John”的对象以外的所有对象。则应使用如下语句:

(!givenName=John)

此语句将查找“名”不为“John”的所有对象。请注意:! 操作符紧邻参数的前面,并且位于参数的圆括号内。由于本语句只有一个参数,因此使用圆括号将其括起以示说明。


*(通配符)

可使用通配符表示值可以等于任何值。使用它的情况可能是:您希望查找具有职务头衔的所有对象。为此,可以使用:

(title=*)

这会返回“title”属性包含内容的所有对象。另一个例子是:您知道某个对象的“名”属性的开头两个字母是“Jo”。那么,可以使用如下语法进行查找:

(givenName=Jo*)

这会返回“名”以“Jo”开头的所有对象。


以下是 LDAP 语法的高级使用示例:


您需要一个筛选条件,用来查找居住在 Dallas 或 Austin,并且名为“John”的所有对象。使用的语法应当是:

(&(givenName=John)(|(l=Dallas)(l=Austin)))


您发现应用程序日志中有 9,548 个事件,因此需要查找导致这些日志事件的所有对象。在此情况下,您需要查找所有被禁用的用户 (msExchUserAccountControl=2),这些用户的 msExchMasterAccountSID 没有值。使用的语法应当是:

(&(msExchUserAccountControl=2)(!msExchMasterAccountSID=*))
注意:

! 操作符与通配符的结合使用可查找属性未设置为任何值的对象。

摘自:www.microsoft.com

No comments: