【发布时间】:2021-12-25 09:35:22
【问题描述】:
我想从字符串编码一个 powershell 脚本,但我无法将其编码为 UTF16-LE。
我正在使用它来将其编码为 base64 字符串。
string encodedscript = "powershell -nop -enc " + Convert.ToBase64String(Encoding.UTF8.GetBytes(PowerShellScript));
但是当我尝试使用 UTF16-LE 编码时,它不起作用,例如:
string encodedscript = "powershell -nop -enc " + Convert.ToBase64String(Encoding.UTF16-LE.GetBytes(PowerShellScript));
所以我的问题是如何使用 c# 对 Powershell 脚本进行编码,以便 Powershell 可以接受。
我正在尝试用 C# 在这个网站上实现类似的目标: https://raikia.com/tool-powershell-encoder/
这是代码示例,powershell 脚本 PowerShellScript 非常长。
这里是一些示例编码脚本:https://pastesite.org/view/raw/74b98937
【问题讨论】:
-
Encoding.Unicode -
@Theo 我一直收到此错误:程序'powershell.exe'无法运行:文件名或扩展名太长在行:1 char:1 + powershell -nop -enc DQAKACQAZwBHAEIATABkAHkAIAA9ACAAWwBTAHkAcwB0AGUA ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~。在 line:1 char:1 + powershell -nop -enc DQAKACQAZwBHAEIATABkAHkAIAA9ACAAWwBTAHkAcwB0AGUA ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FullyQualifiedErrorId : NativeCommandFailed
-
另外,当我从批处理文件运行时,我得到这个错误:系统无法执行指定的程序。
-
如果我将您提供的链接(结果
RwBlAHQALQBEAGEAdABlAA==)中的“Get-Date”结果与 PowerShell[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes("Get-Date"))进行比较,它会给我一个相同的结果。这意味着在 C#Convert.ToBase64String(Encoding.Unicode.GetBytes(PowerShellScript))中我猜会做同样的事情吗?另见this answer -
请展示一个完整的、最少的代码示例,我们可以使用它来尝试重现问题。我们不知道
PowerShellScript是什么,您是否以及如何从磁盘读取它等等。
标签: c# powershell encoding tobase64string utf-16le