如何用C#的System.Management.Automation执行PowerShell脚本?脚本未执行
问题排查与解决
你的代码存在路径转义错误,这是脚本未执行的核心原因:
在C#中,字符串里的反斜杠\属于转义字符,\P和\M会被解析为特殊字符,实际传递给PowerShell的路径已经不是你预期的D:\PSScripts\MyScript.ps1了。
修复方案
任选以下一种方式修正路径字符串:
- 使用双反斜杠转义:
PowerShell ps = PowerShell.Create(); ps.AddScript("D:\\PSScripts\\MyScript.ps1").Invoke();
- 使用逐字字符串(
@前缀),跳过转义处理:
PowerShell ps = PowerShell.Create(); ps.AddScript(@"D:\PSScripts\MyScript.ps1").Invoke();
额外排查步骤
若修复路径后仍未执行,建议检查PowerShell错误流——Invoke()方法默认不会抛出异常,错误信息会被写入Streams.Error集合:
PowerShell ps = PowerShell.Create(); ps.AddScript(@"D:\PSScripts\MyScript.ps1").Invoke(); if (ps.Streams.Error.Count > 0) { foreach (var error in ps.Streams.Error) { Console.WriteLine(error.ToString()); } }
内容的提问来源于stack exchange,提问作者Bill Greer
相关产品推荐
相关产品推荐

