LDAP比较属性

时间:2011-05-19 10:05:42

标签: attributes comparison ldap

我想过滤CN不等于sAMAccountName的所有LDAP对象。因此,我编写了以下查询,遗憾的是,这些查询既不起作用也不符合RFC:

(!(cn=sAMAccountName))

有人知道如何实现所需的功能吗?

祝你好运 托马斯

3 个答案:

答案 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的每个用户对象进行处理,但它确实有效。