LDAP过滤器语法,用于比较两个对象的属性

时间:2015-01-12 21:31:15

标签: powershell active-directory

我想知道是否可以将两个对象的属性与LDAPfilter进行比较?

类似的东西(这不起作用 - 每次都不返回):-LDAPfilter {sAMAccountName=userPrincipalName}

我试图找到这个Microsoft's documentation about the LDAPfilter的线索,但我一无所获。

关于我的目标的一些解释:

我希望每个用户的用户登录名都不同于用户登录名(Pre Windows 2000)。

我正在使用命令"Get-ADUser"

我要比较的两个属性是:"用户登录名" (userPrincipalName)和"用户登录名(Pre Windows 2000)" (sAMAccountName赋)

我不知道LDAP过滤器是否可行,如果没有,是否还有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

不,使用LDAP过滤器是不可能的。您只能将属性与值进行比较,而不能将两个属性相互比较。对于后者,你需要这样的东西:

Get-ADUser -Filter * -Properties * |
  ? { $_.SamAccountName -eq $_.UserPrincipalName }

请注意,这两个属性实际上保证不同,因为UPN通常包含域的FQDN,而sAMAccountName则不包含。您的比较实际上看起来有点像这样:

'user' -eq 'user@domain.example.com'

所以你可能想做这样的事情:

Get-ADUser -Filter * -Properties * |
  ? { "$($_.SamAccountName)@$env:USERDNSDOMAIN" -eq $_.UserPrincipalName }