2011-12-01 85 views
0

我想从C#类传递参数给Powershell脚本。我正在使用Process.Start运行脚本。从C#传递和访问Powershell参数#

string powerShellLocation = @"C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe"; 
ProcessStartInfo psi = new ProcessStartInfo(powerShellLocation); 
psi.Arguments = String.Format("{0} {1}", scriptPath, "some_parameter"); 

上述不起作用。有人可以告诉我如何做到这一点?

+1

什么,准确地说,“不工作”你的现有代码? –

回答

1

您需要设置参数名称。像这样的东西应该工作:

string parameters = string.Format("-FILE {0} -parameter1 \"{1}\"", psFilePath, parameter1Value); 
Process powershell = new Process() 
{ 
    StartInfo = new ProcessStartInfo("powershell.exe", parameters) 
     { 
      UseShellExecute = false, 
      RedirectStandardOutput = true, 
      RedirectStandardError = true 
     } 
}; 
0

你会有什么工作。你还没有提到你的意思above does not work和你的脚本是什么。

我试图用PowerShell脚本的C#代码:

param([string]$a) 

write-host "test" 
write-host $a 

,它给了输出:

test 
some_parameter 

预期。没有必要指定-File-paramter1类似于其他答案的提及,但取决于脚本的功能。

0

您是否将执行策略设置为不受限制或允许您执行脚本。默认情况下,Powershell将脚本设置为不受限制,以防止恶意脚本运行。

运行此命令时,PowerShell是运行管理员:

Get-ExecutionPolicy