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

从C#代码执行带参数的PowerShell脚本时参数传递异常

问题

尝试从C#程序中执行PowerShell脚本,但IPAddress参数无法正常传递。移除该参数后脚本可正常运行,请问哪里操作有误?

相关代码

private async void RunningGst()
{
    byte[] scriptBytes = Manip2Cards.Properties.Resources.run_gst;
    string script = System.Text.Encoding.UTF8.GetString(scriptBytes);

    await Task.Run(() =>
            {
                ProcessStartInfo psi = new ProcessStartInfo
                {
                    FileName = "powershell.exe",
                    Arguments = $"-ExecutionPolicy Bypass -Command \"{script}\" -IPAddress {IPAddress}",
                    RedirectStandardOutput = true,
                    UseShellExecute = false,
                    CreateNoWindow = true
                };

                Process process = new Process
                {
                    StartInfo = psi
                };

                process.Start();

                string output = process.StandardOutput.ReadToEnd();
                process.WaitForExit();

                Console.WriteLine(output);
            });
}
问题原因与解决方法

核心问题

你当前的参数传递逻辑错误:-Command 后用双引号包裹了脚本内容,导致后续的 -IPAddress {IPAddress} 被识别为powershell.exe自身的参数,而非传递给目标脚本的参数,脚本自然接收不到该值。

修正方案

方案1:将参数纳入脚本执行块

把脚本和参数放在同一个执行块中,用 & { ... } 包裹脚本内容,确保参数被传递给脚本:

Arguments = $"-ExecutionPolicy Bypass -Command \"& {{ {script} }} -IPAddress '{IPAddress}'\""
  • & { ... } 会将内部内容作为一个整体执行,后续的 -IPAddress 参数会被正确关联到脚本。
  • 用单引号包裹 {IPAddress},避免IP中的点号或特殊字符引发解析异常。

方案2:规范参数绑定(推荐)

如果你的PowerShell脚本开头定义了参数(比如 param([string]$IPAddress)),可以用参数绑定语法传递,避免字符串拼接风险:

// 需确保脚本开头有 param([string]$IPAddress) 定义
Arguments = $"-ExecutionPolicy Bypass -Command \"& {{ {script} }} -IPAddress `"{IPAddress}`"\""

这里用反引号转义双引号,保证参数值被PowerShell正确解析。

额外注意

  • 先确认 IPAddress 变量的有效值,避免为空或包含空格/特殊字符。
  • 若脚本是外部文件而非嵌入资源,更推荐用 -File 参数直接调用,语法更简洁不易出错:
    // 外部脚本文件的调用示例
    Arguments = $"-ExecutionPolicy Bypass -File \"path/to/run_gst.ps1\" -IPAddress {IPAddress}"
    

内容的提问来源于stack exchange,提问作者Dean Haklai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 03:43:20