我试图从LDAP搜索中排除域控制器。
我有3个DC:staff
,student
和exams
。
所以我可以使用以下搜索DN:
DC=staff,DC=root,DC=mycompany,DC=fr
DC=student,DC=root,DC=mycompany,DC=fr
DC=exams,DC=root,DC=mycompany,DC=fr
然后搜索很简单:(&(objectCategory=person)(objectClass=user)(sAMAccountName=johndoe))
它有效,但一个人(sAMAccountName
)可以在几个领域(即学生和考试),所以它被发现两次。我需要将搜索范围限制为仅 staff
和student
。
我尝试了以下查询,但是不起作用:
(&(objectCategory=person)(objectClass=user)(sAMAccountName=johndoe)(!(memberOf=DC=exams,DC=root,DC=mycompany,DC=fr)))
答案 0 :(得分:2)
我认为你正在混淆你的DC和团体。 memberOf
是Active Directory中的反向指针属性;它保留在用户对象上,但直接对应于用户所属的组。如果您实际上拥有与您的域相对应的组中的不同成员,则可以执行类似的操作。虽然看起来更像是......
(&
(objectCategory=person)(objectClass=user)(sAMAccountName=johndoe)
(!(memberOf=cn=exams_group,ou=groups,DC=exams,DC=root,DC=mycompany,DC=fr))
)
如果这看起来不适合您,请查看每个条目的userPrincipalName
属性值。它们可能都有不同的扩展名。 userPrincipalName
在整个林中保证唯一,通常采用电子邮件地址samaccountname@domainname
的格式。如果跨域有重复的samaccountnames,则userprincipalname的域组件很可能会有所不同。
你可以这样做......有点粗糙但可能有效
(&
(objectCategory=person)(objectClass=user)(sAMAccountName=johndoe)
(!(userprincipalname=*@exams.root.mycompany.fr))
)
或者您只需提交多个肯定的搜索请求。