我想筛选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