【问题标题】:LDAP filter syntax to compare two object's properties用于比较两个对象属性的 LDAP 过滤器语法
【发布时间】:2015-01-13 07:45:14
【问题描述】:

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

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

我试图在这个Microsoft's documentation about the LDAPfilter 中找到线索,但我什么也没找到。

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

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

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

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

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

【问题讨论】:

    标签: powershell active-directory


    【解决方案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 }
    

    【讨论】:

    • 感谢您的回答,但看起来我没有得到任何结果?我对两者的属性是否正确? (SamAccountName 和 UserPrincipalName )
    • 我猜这两个通常不会相同。 UPN 将是 user@domainname,而 samaccounanme 将只是 user。还取决于用户可以登录多少个域。
    • 这一天对我来说已经结束了,我明天会测试这一切!非常感谢您的帮助!
    猜你喜欢
    • 2023-03-31
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多