You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C#将PowerShell脚本编码为可识别的UTF16-LE格式Base64字符串

C#编码PowerShell可执行的Base64脚本方案

错误原因

  • PowerShell的-enc(-EncodedCommand的缩写)参数仅接受 UTF-16LE编码字节流转Base64 后的字符串,你最初使用UTF8编码不符合参数要求,自然无法执行。
  • 你写的Encoding.UTF16-LE属于错误的C#语法,.NET 类库中对应UTF-16LE编码的实例是Encoding.Unicode,错误的编码对象无法生成符合要求的字节序列。

正确实现代码

using System.Text;

// 你的原始PowerShell脚本内容,支持任意长度
string PowerShellScript = "这里替换为你的实际脚本内容";

// 1. 用UTF-16LE(对应C#中的Encoding.Unicode)转字节数组
byte[] scriptUtf16Bytes = Encoding.Unicode.GetBytes(PowerShellScript);

// 2. 字节数组转Base64
string base64Encoded = Convert.ToBase64String(scriptUtf16Bytes);

// 3. 拼接最终命令
string runCommand = "powershell -nop -enc " + base64Encoded;

注意事项

  • 无需额外添加字节序标记(BOM),Encoding.Unicode.GetBytes()默认不会输出BOM,刚好匹配PowerShell的参数要求。
  • 中文、特殊符号、超长脚本都可以正常支持,Base64编码无长度限制,PowerShell可正常解析长编码参数。

内容的提问来源于stack exchange,提问作者Speed Runer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:24:06