我决定使用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。
答案 0 :(得分: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
所以你可以暂时删除它。