LDAP:查询语法

LDAP: Query syntax

我基本上忘记了关于查询 AD 的所有知识,现在我需要检索某个特定部门 (DAAS) 中的用户列表。我已经确定有一个名为 DAAS 的组织单位。我只是不知道如何将列表限制为该 OU。

此字符串有效,但会检索整个组织;

strQueryDL = "<LDAP://" & strDefaultNamingContext & ">;(&(objectCategory=person)(objectClass=user));distinguishedName;subtree"

该字符串无效;

strQueryDL = "<LDAP://" & strDefaultNamingContext & ">;(&(objectCategory=person)(objectClass=user)(OU=DAAS));distinguishedName;subtree"

这个字符串也不起作用;

strQueryDL = "<LDAP://OU=DAAS" & strDefaultNamingContext & ">;(&(objectCategory=person)(objectClass=user));distinguishedName;subtree"

该死的 OU 在这个字符串中属于哪里?

谢谢! 直流

条目不必仅因为 OU 属性位于其 DN 中的某处而包含 OU 属性。它们只需要在其中包含 RDN 值。如果这没有意义,请参阅下文<\a>。

你可以通过

找出所有dn以ou=daas开头的子树的DN
strQueryDL = "<LDAP://" & strDefaultNamingContext & ">;(&(objectCategory=organizationalunit)(OU=DAAS));distinguishedName;subtree"

一旦你有了它,你就可以在你有 strDefaultNamingContext 的地方使用那个 DN。

还有一个可扩展的搜索表单,可以指定针对 DN 而不是属性执行搜索,但我不知道它是否适用于 AD。如果它在 AD 中有效,则该形式将是:

strQueryDL = "<LDAP://" & strDefaultNamingContext & ">;(&(objectCategory=person)(objectClass=user)(OU:dn:=DAAS));distinguishedName;subtree"

一个DN是由一堆DN组件组成的。每个组件都是一个属性值对,由 = 连接。您可以使用 + 连接同一级别的组件,但通常您只需使用 , 将它们链接起来。同一级别的组件是无序的。从 DN 开始到 , 的位是 RDN,必须在条目中表示。 DN 中的所有其他内容都是高级 DN。如果条目不是其树中的顶级条目,则上级 DN 必须由其自己的条目表示,但这些值中的 none 需要在从属条目上。

这到底是什么意思是另一个问题,之前已经被问过多次,我正在查看不同的问题以找出最佳答案...或者我是否应该提交一个回答。完成该搜索后,我将用 link.

替换此文本

您在最后一个方面走在了正确的轨道上,但可能只是在 OU 之后缺少一个逗号(如果 OU 位于域的根目录)。

但如果您已经知道 OU 的 distinguishedName,那么您可以直接使用它。关键是,字符串最终应该看起来像这样(假设 OU 的 DN 位于 domain.com/DAAS):

strQueryDL = "<LDAP://OU=DAAS,DC=domain,DC=com>;(&(objectCategory=person)(objectClass=user));distinguishedName;subtree"

Ed Grimm 的回答向您展示了如何找到 OU 本身,如果您还不知道 OU 的 DN,这将帮助您获得它。