2011-06-20 56 views
3

我有一个PS脚本添加防火墙规则。我正在使用Process.Start(“powershell.exe”,“-File”+“\”C:\ Program Files(x86)\ blah \ blah \ add-FirewallRule.ps1 \“”);试图在C中运行powershell脚本

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

有什么建议吗?

回答

3

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

0

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

+0

是的,我以管理员身份运行。 – tjernigan

+0

而您没有从Process.Start方法获取任何异常,但该脚本仍未执行?当你的代码运行时,脚本打开的目录会不同于命令行吗? – therealmitchconnors

11

由于您在C#中,我建议使用PowerShell Invoke API而不是Process.Start。该API易于使用,并希望能够更好地指出发生了什么问题。

+0

我会试一试,谢谢! – tjernigan