从C#传递和访问Powershell参数

时间:2011-12-01 21:27:49

标签: c# powershell

我正在尝试从C#类将参数传递给Powershell脚本。我正在使用Process.Start运行脚本。

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

以上不起作用。有人可以告诉我如何实现这个目标吗?

3 个答案:

答案 0 :(得分: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
      }
};

答案 1 :(得分:0)

你有什么工作。您没有提到above does not work的含义以及您的脚本是什么。

我使用Powershell脚本尝试了C#代码:

param([string]$a)

write-host "test"
write-host $a

它给出了输出:

test
some_parameter

正如所料。没有必要像其他答案一样指定-File-paramter1,但这取决于您的脚本的功能。

答案 2 :(得分:0)

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

运行powershell时以管理员身份运行此命令:

Get-ExecutionPolicy