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

LDAP filter syntax to compare two object's properties

我想知道是否可以使用 LDAPfilter 比较两个对象的属性?

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

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

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

我想让每个用户的用户登录名都不同于用户登录名(Windows 2000 之前)。

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

我要比较的两个属性是:"User logon name" (userPrincipalName) 和 "User logon name (Pre Windows 2000)" (sAMAccountName)

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

不,使用 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 }