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,这将帮助您获得它。
我基本上忘记了关于查询 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开头的子树的DNstrQueryDL = "<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,这将帮助您获得它。