如何通过Powershell运行大型base64编码文件

时间:2018-11-29 23:37:43

标签: powershell cmd base64

我有一个powershell.ps1脚本,我对其进行了如下的base64编码

$Base64 = [System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes('c:\path\to\powershell.ps1'));

现在,我已将此输出存储到base64.txt文件中。

我试图通过CMD如下启动该脚本,

powershell.exe -EncodedCommand (Base64String)

但是我最终遇到了以下错误

Cannot process the command because the value specified with -EncodedCommand is not properly encoded. The value must be Base64 encoded.

我意识到CMD没有占用整个(Base64String)。我的(Base64String)的全长是11,133个字符。但是CMD只接受8160个字符。

是否有任何方法或解决方法来运行此base64编码?

谢谢。

1 个答案:

答案 0 :(得分:0)

这对我有用(myscript.ps1 包含 base64 编码的命令):

powershell -encodedcommand (Get-Content 'myscript.ps1' -Raw)

这与您在 Bash 中所做的非常相似:

$ powershell -encodedcommand `cat myscript.ps1`

Obs:解决一些评论,有时确实需要这样做。我的特殊用例是在检测我的纯文本 shell 代码的 Windows 机器上躲避 AV 的同时执行反向 shell。