使用C#System.Diagnostics.Process运行powershell脚本,powershell脚本看不到任何参数

时间:2012-11-25 11:23:50

标签: c# powershell external-process

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

1 个答案:

答案 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

所以你可以暂时删除它。