我基本上已经忘记了有关查询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
答案 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(如果您尚不知道的话)。