1

我决定使用 System.Diagnostics.Process 来运行一个 powershell 脚本,只是因为它看起来很简单,我不关心结果输出,我希望用户能够看到正在运行的内容

Process process = new Process();

Process.StartInfo.FileName = "powershell.exe"
Process.StartInfo.Arguments = String.Format("-executionpolicy unrestricted -noexit \"{0}\" -XmlConfigFile {1}",scriptname, configFile);
process.Start();

当我运行它时,脚本看不到任何参数。由于 noexit 我可以在最后测试 $args 和 $MyInvocation 。没有争论。如果我在 cmd.exe 中运行它,它可以工作,如果我离开 {1},它会抱怨 -XmlConfigFile 缺少一个参数。

编辑:原来这是我的错我正在运行嵌套的powershell会话来处理强制powershell使用4.0并且只传递不包含$ psboundparameters中的参数的args。

4

1 回答 1

1

试试这个,因为它对我有用:

Process.StartInfo.Arguments = String.Format("-executionpolicy unrestricted 
-noexit -file \"{0}\" -XmlConfigFile {1}",scriptname, configFile);

虽然我不知道 -XmlConfigFile 是做什么的。因为它似乎没有有效的论点: http ://technet.microsoft.com/en-us/library/hh847736.aspx

因此,您可以先将其删除。

于 2012-11-25T12:03:27.623 回答