我试图使用Powershell的-EncodedCommand标志弹出一个简单的消息框,但它仍然失败。我在过去的几个小时里尝试过谷歌搜索,但似乎无法实现这一目标。它几乎看起来像编码错误,但我使用常规UTF-8和标准的ASCII向后兼容字符。
失败的命令:
Powershell.exe -EncodedCommand QWRkLVR5cGUgLUFzc2VtYmx5TmFtZSBQcmVzZW50YXRpb25Db3JlLFByZXNlbnRhdGlvbkZyYW1ld29yaztbU3lzdGVtLldpbmRvd3MuTWVzc2FnZUJveF06OlNob3coJ3dvcmtpbmcnKTs=
b64解码命令是:
Add-Type -AssemblyName PresentationCore,PresentationFramework;[System.Windows.MessageBox]::Show('working');
我错过了什么?感谢您帮助我的noob问题
答案 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