我想过滤CN不等于sAMAccountName的所有LDAP对象。因此,我编写了以下查询,遗憾的是,这些查询既不起作用也不符合RFC:
(!(cn=sAMAccountName))
有人知道如何实现所需的功能吗?
祝你好运 托马斯
答案 0 :(得分:2)
LDAP过滤器不允许使用其他属性的值进行过滤器比较。您必须获取条目并比较两个值。
答案 1 :(得分:1)
(!(cn=sAMAccountName))
是“符合RFC的”,因为断言的右侧被视为cn
属性的值。
使用此过滤器将导致在搜索响应中返回所有条目,其中cn
属性的值存在,并且cn
的匹配规则返回false
的情况 - 不敏感值samaccountname
(假设cn
属性匹配规则尚未从已发布的标准更改)。结果将取决于:
也许您打算使用
cn=value-of-samaccount-name
答案 2 :(得分:1)
如果您在Windows环境中,可以使用PowerShell表达式语言。
Get-ADUser -Filter * -Server my.domain.name -Properties CN |
Where-Object {$_.CN -ne $_.sAMAccountName}
这是一个相当昂贵的查询,因为它返回PowerShell的每个用户对象进行处理,但它确实有效。