0

我试图从我的 LDAP 搜索中排除域控制器。

我有 3 个 DC staff:studentexams.

所以我可以使用以下搜索 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) 可以在多个域下(即学生和考试),所以它被找到了两次。我需要将搜索限制为staffstudent

我尝试了以下查询,但不起作用:

(&(objectCategory=person)(objectClass=user)(sAMAccountName=johndoe)(!(memberOf=DC=exams,DC=root,DC=mycompany,DC=fr)))

4

1 回答 1

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))
)

或者您可以只提交多个积极的搜索请求。

于 2015-02-23T13:41:37.547 回答