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



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

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

我试图在这个Microsoft的文档中找到有关LDAP过滤器的线索,但我什么也没找到。

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

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

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

我要比较的两个属性是:"用户登录名"(userPrincipalName)和"用户登录名(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 }

最新更新