试图在C#中运行powershell脚本

时间:2011-06-20 15:28:06

标签: c# .net powershell

我有一个添加防火墙规则的PS脚本。

我正在使用Process.Start(“powershell.exe”,“ - File”+“\”C:\ Program Files(x86)\ blah \ blah \ add-FirewallRule.ps1 \“”);

此命令在我的本地计算机上运行正常,但在测试中我一直在Windows Server 2008 R2上运行该程序,并且PS脚本将无法运行。如果我从命令行手动运行它,它运行并正常工作,但我的代码将无法正常工作。所有文件路径都是正确的(我已经检查过并且有一个同事检查它)。当我运行代码时,PS控制台甚至不会弹出。

有什么建议吗?

3 个答案:

答案 0 :(得分:11)

由于您使用的是C#,我建议使用PowerShell Invoke API而不是Process.Start。该API易于使用,希望能更好地指示出现问题。

答案 1 :(得分:3)

事实证明,我没有考虑在64位系统上运行32位应用程序导致的自动重定向。所以我所要做的就是进入并为32位版本的powershell设置适当的执行策略。

答案 2 :(得分:0)

您是否尝试过以管理员身份运行?我相信Process.Start需要提升权限,例如沙盒模式中不可用。