我正在尝试统一streetaddress
我们用户的属性。在德语中,该字符ß
也可以表示为ss
。
有些用户有Examplestraße
asstreetaddress
值,而其他用户有Examplestrasse
。
我正在尝试列出所有用户Examplestraße
(请注意ß
),但这似乎是不可能的:
Get-ADUser -server domain.example.com -properties StreetAddress -filter "Streetaddress -eq 'Examplestraße'"
这将列出具有ss
和ß
属性的用户。同一问题会影响 AD 用户和组的“查找”功能。
如果我尝试过滤列,Excel 也会这样做。这让我很抓狂。我该如何强制“严格”匹配这些字符?
答案1
虽然过滤器Get-ADUser -Filter
看起来像 PowerShell 语法,但其内部被转换为 LDAP 过滤器。据我所知,Active Directory 中的 LDAP 实现不支持任何常见的“可扩展匹配”规则,这些规则允许覆盖服务器端 LDAP 过滤器的行为(无论如何您都无法通过 Get-ADUser 使用它)。
因此,你必须首先获取服务器提供的内容,然后应用当地的PowerShell 过滤器可进一步缩小范围:
Get-ADUser -Filter "StreetAddress -eq 'Examplestraße'" | `
Where-Object { $_.StreetAddress -eq "Examplestraße" }
这是第二个-eq
是由 PowerShell 本地完成,并且是“愚蠢”的字符串比较,因此它不会匹配strasse
。