LDAP:查询语法

时间:2019-01-30 23:43:25

标签: active-directory ldap querying

我基本上已经忘记了有关查询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"

该darn OU在此字符串中属于什么位置?

谢谢! DC

2 个答案:

答案 0 :(得分:0)

条目不必仅因为OU属性位于其DN中就包含该属性。仅要求它们具有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必须由其自己的条目表示,但这些值均不需要位于从属条目上。

这完全是另一个问题,之前已经被问过多次,我正在寻找不同的问题,以找出哪个是最佳答案……还是我应该提交答案。完成搜索后,我将用链接替换此文本。

答案 1 :(得分:0)

您在最后一条上的位置正确,但是可能只是在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(如果您尚不知道的话)。