我正在尝试使用Get-ADUser提取用户的选择集。用户属于名称包含非ASCII字符的公司,例如“Gåäördet”。不幸的是,我们必须使用company属性来完成此任务,我们还需要它通过脚本工作。
以下内容在交互式会话中非常有用,但是在脚本中执行时不返回任何数据:
$Company = "Gåäördet"
Get-ADUser -Filter "company -eq '$Company'"
我找到了可行的解决方法,但不够可靠(选择错误对象的风险):
# Work-around 1:
$Company = "Gaaordet" # Replace åäö with aao in the variable
Get-ADUser -Filter "company -eq '$Company'" # Matches the company "Gåäördet", but why?
...要么...
# Work-around 2:
$Company = "G...rdets" # Use regex for åäö
Get-ADUser -Filter * -Properties Company | ? Company -match "$Company"
需要特别注意的是:字符编码可能不是这里的问题。如评论中所建议,我将其放在脚本中。阅读每个Get-ADUser-line的注释:
$OutputEncoding = [Console]::OutputEncoding
$Company = "aao"
Get-ADUser -Filter "company -eq '$Company'" # Matches company "åäö"
$Company = "åäö"
Get-ADUser -Filter "company -eq '$Company'" # No matches
我希望你们中的一些人可以为这个难题提供更好的解决方案。
谢谢@RyanRies,很不幸,它似乎没有帮助。阅读我的编辑以获取更多信息。
—
Tanel Rebane 2015年
因此,我可以(不幸地)使用LDP.exe重现此行为,因此我们的问题可能比Powershell更深层次。
—
瑞安·里斯
使用-LdapFilter代替-Filter可以工作吗?示例:-LdapFilter“(company = $ Company)”
—
user2320464 2015年
@TessellatingHeckler,在“Gåäördet”上仍然没有比赛。
—
Tanel Rebane 2015年
@ user2320464,LdapFilter也没有匹配。
—
Tanel Rebane 2015年