如何在c#中使用System.Diagnostics.Process.Start运行PowerShell脚本?

如何在c#中使用System.Diagnostics.Process.Start运行PowerShell脚本?,c#,powershell,execute,system.diagnostics,C#,Powershell,Execute,System.diagnostics,我在写这个: using System.Diagnostics; Process.Start("C:\\CodeProjects\\C#\\WindowsPowerShell\\v1.0\\powershell_ise.exe", "-File .\\mp4_to_flac.ps1"); 所有这些操作都是在Windows PowerShell ISE中打开脚本。但我也希望它运行!那么,我还需要传入哪些参数才能执行它呢 你可以这样称呼它: Process.Start(".\\mp4_to_fla

我在写这个:

using System.Diagnostics;
Process.Start("C:\\CodeProjects\\C#\\WindowsPowerShell\\v1.0\\powershell_ise.exe", "-File .\\mp4_to_flac.ps1");
所有这些操作都是在Windows PowerShell ISE中打开脚本。但我也希望它运行!那么,我还需要传入哪些参数才能执行它呢


你可以这样称呼它:

Process.Start(".\\mp4_to_flac.ps1");

并确保所有windows设置都正确,以便双击该文件将执行该文件。

您不希望运行powershell_ise.exe,但希望运行powershell.exe。在dos命令提示符下,您可以在命令或脚本前面加上@powershell前缀,但对于进程,您需要使用类似

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

(Win 8.1上是我的),如果你使用的是不同的版本,你的应该在附近的某个地方

那些家伙把这些开关扔进去

-NoProfile -ExecutionPolicy unrestricted

在命令提示符下执行powershell时,您可能还必须执行此操作,具体取决于执行策略的设置。

双击.ps1将以正确的默认设置打开它进行编辑。这是一种安全措施。在我的机器上,我更改了设置,因此双击将执行.ps1。有了这个设置,我的回答中的方法就会起作用。我个人认为这不是很有帮助,因为并不是每个人都愿意将缺省的全局(安全)设置更改为非默认和不安全的,这样单个程序就可以工作。@ DrKoch,您是如何将设置更改为使用powershell执行.ps1的?您为什么使用powershell_ise.exe而不是powershell.exe?太简单了!谢谢,我刚从代码中删除了“_ise”。它执行而不是打开powershell ISE。太好了。:)知道为什么使用进程运行PS脚本不会加载所有模块吗?我的脚本包含
Import Module ServerManager
,手动执行时运行良好,但从过程中失败
Import Module:未加载指定的模块\ServerManager未找到有效的模块文件