我想篩選CN不等於sAMAccountName的所有LDAP對象。所以我寫了下面的查詢,不幸的是既不工作也不似乎是符合RFC:LDAP比較屬性
(!(cn=sAMAccountName))
有誰知道如何acheive所需的功能?
問候 托馬斯
我想篩選CN不等於sAMAccountName的所有LDAP對象。所以我寫了下面的查詢,不幸的是既不工作也不似乎是符合RFC:LDAP比較屬性
(!(cn=sAMAccountName))
有誰知道如何acheive所需的功能?
問候 托馬斯
(!(cn=sAMAccountName))
是「符合RFC」,因爲聲明的右側被認爲是cn
屬性的值。
使用該過濾將導致所有條目中搜索響應,其中cn
屬性的值存在被返回,和爲不區分大小寫的值samaccountname
(假設cn
屬性匹配規則具有cn
返回false
匹配規則沒有從公佈的標準改變)。結果將受:
也許你的意思
cn=value-of-samaccount-name
如果您處於Windows環境中,則可以使用PowerShell表達式語言來執行此操作。
Get-ADUser -Filter * -Server my.domain.name -Properties CN |
Where-Object {$_.CN -ne $_.sAMAccountName}
這是一個相當昂貴的查詢,因爲它返回每個用戶對象的PowerShell做處理,但它確實有效。
LDAP過濾器不允許使用另一個屬性的值進行過濾器比較。您必須獲取條目並比較兩個值。
這個問題似乎並不合理。你真的想要檢索每一條記錄嗎*除了那個?你的實際需求是什麼? – EJP 2011-05-19 10:35:15
如上所述,我想檢索公用名稱不等於sAMAccountName的所有對象(在我的情況下爲用戶)。我認爲查詢會是(cn!= sAMAccountName),它也可以寫成(!(cn = sAMAccountName))...但顯然,我不是LDAP專家:) – Thomas 2011-05-22 09:14:41
不,那只是返回所有記錄'cn'屬性沒有值'sAccountName',被視爲文字。我不認爲你可以寫一個你想要的過濾器。只有LHS被視爲屬性名稱。 – EJP 2011-05-23 04:28:40