get-aduser过滤非英文字符

时间:2015-02-28 12:14:59

标签: powershell active-directory

我想从其描述中获取SamAccountName帐户。这个脚本工作正常

Get-ADUser -Filter "description -like '*qwerty*'" | Select-Object SamAccountName

但是如果我用西里尔符号改变“qwerty”,脚本就不会返回预期的结果。我该怎么做才能用西里尔符号搜索?

1 个答案:

答案 0 :(得分:1)

在后台,-Filter参数值将转换为LDAP过滤器。 根据{{​​3}},您首先需要对输入字符串进行UTF-8编码,然后使用反斜杠(\

转义非Ascii字符

无法测试它,但这应该可以解决问题:

$CyrillicString = "Алексей"
$UTF8EncodedStr = [System.Text.Encoding]::UTF8.GetBytes($CyrillicString)
$EscapedUTF8Str = $UTF8EncodedStr |ForEach-Object { "\{0:X2}" -f $( $_ -as [int16] ) }
Get-ADUser -Filter "name -like '$( -join $EscapedUTF8Str )'"