本文讨论了轻量级目录访问协议 (LDAP) 查询,它在排查 Microsoft Exchange Server 及它与其目录之间关系的故障时十分有用,但是它也经常令人困惑不解。本文介绍了有关 LDAP 查询的基本信息。 基本 LDAP 语法 何时使用 LDAP 查询? 使用“Active Directory 用户和计算机”执行搜索 使用 LDP 执行搜索 使用 LDIFDE 执行搜索 在 ADModify 中使用 LDAP 查询 更多信息 =(等于) 此 LDAP 参数表明某个属性等于某个值的条件得到满足。例如,如果希望查找“名“属性为“John”的所有对象,可以使用: (givenName=John) 这会返回“名”属性为“John”的所有对象。圆括号是必需的,以便强调 LDAP 语句的开始和结束。 %26amp;(逻辑与) 如果具有多个条件并且希望全部条件都得到满足,则可使用此语法。例如,如果希望查找居住在 Dallas 并且“名”为“John”的所有人员,可以使用: (%26amp;(givenName=John)(l=Dallas)) 请注意,每个参数都被属于其自己的圆括号括起来。整个 LDAP 语句必须包括在一对主圆括号中。操作符 %26amp; 表明,只有每个参数都为真,才会将此筛选条件应用到要查询的对象。 !(逻辑非) 此操作符用来排除具有特定属性的对象。假定您需要查找“名”为“John”的对象以外的所有对象。则应使用如下语句: (!givenName=John) 此语句将查找“名”不为“John”的所有对象。请注意:! 操作符紧邻参数的前面,并且位于参数的圆括号内。由于本语句只有一个参数,因此使用圆括号将其括起以示说明。 *(通配符) 可使用通配符表示值可以等于任何值。使用它的情况可能是:您希望查找具有职务头衔的所有对象。为此,可以使用: (title=*) 这会返回“title”属性包含内容的所有对象。另一个例子是:您知道某个对象的“名”属性的开头两个字母是“Jo”。那么,可以使用如下语法进行查找: (givenName=Jo*) 这会返回“名”以“Jo”开头的所有对象。 以下是 LDAP 语法的高级使用示例: 您需要一个筛选条件,用来查找居住在 Dallas 或 Austin,并且名为“John”的所有对象。使用的语法应当是: (%26amp;(givenName=John)(|(l=Dallas)(l=Austin))) 您发现应用程序日志中有 9,548 个事件,因此需要查找导致这些日志事件的所有对象。在此情况下,您需要查找所有被禁用的用户 (msExchUserAccountControl=2),这些用户的 msExchMasterAccountSID 没有值。使用的语法应当是: (%26amp;(msExchUserAccountControl=2)(!msExchMasterAccountSID=*)) ! 操作符与通配符的结合使用可查找属性未设置为任何值的对象。 在使用 Exchange Server 时,您遇到了使用 LDAP 字符串的情况。例如,当您设置收件人或邮箱管理策略或地址列表过滤器时,或者,当您搜索 Active Directory 目录服务时,Exchange Server 都会使用 LDAP。在下面的部分中,我们将介绍一些 LDAP 语句的使用方式。 下例描述了如何“Active Directory 用户和计算机”执行搜索: 1. 打开“Active Directory用户和计算机”。 2. 右击域对象并选择查找。 3. 单击查找旁边的下拉列表,然后选择自定义搜索。 4. 从下一屏幕中,选择高级选项卡。 5. 在输入 LDAP 查询下,输入相应的 LDAP 语句。 本示例尝试查找职务为 prez 或姓名以 test 开头的所有对象。如果您单击立即查找,应该能够看到相应的输出,如以下屏幕截图所示。 您还可以使用 LDP 执行搜索,该工具已包括在 Microsoft Windows Server 2003 和 Windows 2000 Server 支持工具之中。该工具不仅为您赋予了搜索域容器的能力,而且允许您搜索配置容器。首先,您应打开 LDP 并连接到有效的域控制器。然后,您需要使用相应凭证进行绑定。请选择视图,然后选择树视图。保留基位置 DN 字段为空,然后单击确定。导航到要搜索的容器,右击该容器,然后选择搜索。 将出现一个对话框,其中的基位置 DN 字段包含了正确的值。输入进行筛选所依据的 LDAP 语句,将出现类似如下的内容。 如果希望搜索当前级别以下的所有容器,请确信选择了子树单选按钮。单击运行,然后开始查找所有匹配项。 您可能经常需要搜索一组满足特定条件的对象并且希望建立这些用户的列表。LDIFDE 是一个可以用来建立此列表的命令行工具。假定您希望查找并保存 mailNickName 以 Jeff 开头的所有用户的列表。那么,您可能会运行如下命令。 C:\>ldifde -d “DC=witaylorroot,DC=com” -f c:\output.txt -r “(%26amp;(objectClass=user)(mailNickName=jeff*)) 在本例中,您将查找三个对象并将他们的所有属性导出到指定的 .txt 输出文件中。但是,如果您打算导出数千用户的查找结果,导出文件将过于庞大。为此,我们可以使用其他选项。您可以使用 ¨Cl(小写的 L)开关指定导出哪些属性。可分辨名称将总是被导出,但是如果希望仅导出该名称,可以在字符串中添加 ¨Clnothing,以简化输出结果。以下命令便是这样的一个例子。 C:\>ldifde -d “DC=witaylorroot,DC=com” -f c:\output.txt -l nothing -r “(%26amp;(objectClass=user)(mailNickName=jeff*)) 请考虑这样一种情况,您希望使用先前引用的 LDIFDE 导出结果,但是只想在输出中包括 homeMDB 属性。为此,必须使用以下命令。 C:\>ldifde -d “DC=witaylorroot,DC=com” -f c:\output.txt -l “homeMDB” -r “(%26amp;(objectClass=user)(mailNickName=jeff*)) dn:CN=jeff,OU=55Users,DC=witaylorroot,DC=com changetype:add homeMDB:CN=Private Information Store (WITAYLORNT4EX55),CN=First Storage Group,CN=InformationStore,CN=WITAYLORNT4EX55,CN=Servers,CN=WITAYLORMIXEDSITE,CN=Administrative Groups,CN=WITAYLORORG,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=witaylorroot,DC=com dn:CN=jeff2,CN=Users,DC=witaylorroot,DC=com changetype:add homeMDB:CN=Private Information Store (WITAYLORNT4EX55),CN=First Storage Group,CN=InformationStore,CN=WITAYLORNT4EX55,CN=Servers,CN=WITAYLORMIXEDSITE,CN=Administrative Groups,CN=WITAYLORORG,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=witaylorroot,DC=com dn:CN=jeff3,CN=Users,DC=witaylorroot,DC=com changetype:add homeMDB:CN=Private Information Store (WITAYLORNT4EX55),CN=First Storage Group,CN=InformationStore,CN=WITAYLORNT4EX55,CN=Servers,CN=WITAYLORMIXEDSITE,CN=Administrative Groups,CN=WITAYLORORG,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=witaylorroot,DC=com 如果您正在进行导出,并且没有限制导出哪些属性,可能需要使用 ¨Cn 开关来排除正常情况下会包括在内的任何值。这有助于防止导出文件的体积变得过于庞大。 若要获得 ADModify 工具,请联系微软产品支持服务。有关如何联系微软产品支持服务的更多信息,请参见微软支持和帮助网站。 若要通过第三方网站获得 ADModify 工具,请访问以下 GotDotNet 网站:ADModify.NET:Workspace 主页. ADModify 是微软产品支持服务部门的日常使用工具。对于大型 Active Directory 环境,将可能包含数千用户的整个组织单位 (OU) 添加到右侧列表的工作并对他们进行分析以找出所需更改的用户,这个过程可能并不那么轻松。因此,我们可以使用其他方法实现这个目的。在第一个屏幕上,选择修改现有用户属性并单击下一步。在修改 Active Directory 用户屏幕上,有一个高级按钮。 如果单击高级按钮,将出现自定义 LDAP 筛选条件对话框。在该对话框中,可输入要使用的 LDAP 筛选条件。在本例中,您只想列出启用了邮件的组。筛选条件看起来如下所示。 然后,单击确定。选择希望 ADModify 进行搜索的 OU 或域。如果您希望它搜索所选容器的下级容器,请确信选择了枚举用户时遍历子容器。单击添加到列表,然后在接到需花费较长时间的警告时单击是。满足所指定条件的对象现在将显示在右侧窗格中。 在这里,可突出显示要修改的对象,然后继续向导的后续步骤。 有关更多信息,请参见如下微软知识库文章: 255602, “XADM:使用 LDP 实用程序进行浏览和查询“ 296112, “XADM:不能为收件人策略指定组织单位或帐户位置“%26#8226; %26#8226; %26#8226; %26#8226; %26#8226; %26#8226; %26#8226; 基本 LDAP 语法
%26#8226; %26#8226; %26#8226; %26#8226; %26#8226; %26#8226; %26#8226; 何时使用 LDAP 查询?
使用“Active Directory 用户和计算机”进行搜索
使用 LDP 进行搜索
使用 LDIFDE 执行搜索
在 ADModify 中使用 LDAP 查询
更多信息
%26#8226; %26#8226;
注意: