我决定使用 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。