PowerShell EncodedCommand失败

时间:2018-05-08 03:45:37

标签: windows powershell encoding character-encoding

我试图使用Powershell的-EncodedCommand标志弹出一个简单的消息框,但它仍然失败。我在过去的几个小时里尝试过谷歌搜索,但似乎无法实现这一目标。它几乎看起来像编码错误,但我使用常规UTF-8和标准的ASCII向后兼容字符。

失败的命令:

Powershell.exe -EncodedCommand QWRkLVR5cGUgLUFzc2VtYmx5TmFtZSBQcmVzZW50YXRpb25Db3JlLFByZXNlbnRhdGlvbkZyYW1ld29yaztbU3lzdGVtLldpbmRvd3MuTWVzc2FnZUJveF06OlNob3coJ3dvcmtpbmcnKTs=

b64解码命令是:

Add-Type -AssemblyName PresentationCore,PresentationFramework;[System.Windows.MessageBox]::Show('working');

我错过了什么?感谢您帮助我的noob问题

1 个答案:

答案 0 :(得分:2)

传递给-EncodedCommand的Base64编码字符串必须编码 UTF-16LE (" Unicode")字符串的字节表示 - UTF-8 支持:

$cmd = 'Add-Type -AssemblyName PresentationCore,PresentationFramework;[System.Windows.MessageBox]::Show(''working'')'
$encodedCmd = [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($cmd))

powershell.exe -EncodedCommand $encodedCmd