2015-02-23 141 views
0

我嘗試從我的LDAP搜索中排除域控制器。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)))

回答

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在整個森林保證是唯一的,通常採用電子郵件地址[email protected]的格式。如果跨域具有重複的samaccountname,那麼userprincipalname的域組件將會有所不同。

你可以做這樣的事情......有點粗糙,但很有效的

(& 
    (objectCategory=person)(objectClass=user)(sAMAccountName=johndoe) 
    (!(userprincipalname=*@exams.root.mycompany.fr)) 
) 

或者您也可以提交多個積極的搜索請求。

+0

我們沒有特定的考試組。但是你對'userPrincipalName'說得很對!域組件是不同的(_exams.root.mycompany.fr_ vs _mycompany.ch_),所以我可以對該屬性進行限制。查詢:'(&(objectCategory = person)(objectClass = user)(sAMAccountName = johndoe)(!(userprincipalname = * @ exam.root.mycompany.fr)))'。謝謝! – Yann39 2015-02-23 16:10:29