在C#中尝试运行PowerShell脚本

3

我有一段添加防火墙规则的PowerShell脚本。

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

这个命令在我的本地机器上运行得很好,但是在测试中,我在Windows Server 2008 R2上运行程序时,PS脚本无法运行。如果我从命令行手动运行它,它可以正常运行和工作,但是我的代码无法正常工作。所有文件路径都是正确的(我已经检查过了,并让同事检查过)。当我运行代码时,PS控制台甚至不会弹出。

有什么建议吗?

3个回答

11

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


3
原来我没有考虑在64位系统上运行32位应用程序时自动重定向的情况。所以我只需要进去设置适当的执行策略,就可以针对32位版本的powershell进行操作了。

0

你尝试以管理员身份运行了吗?我相信Process.Start需要提升的权限,在沙盒模式下是不可用的。


你的Process.Start方法没有抛出任何异常,但脚本仍未执行?这可能是因为在代码中运行时打开脚本的目录与命令行中不同。 - therealmitchconnors

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接