我想知道是否可以将两个对象的属性与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 }