从c#传递和访问Powershell参数

本文关键字:访问 Powershell 参数 | 更新日期: 2023-09-27 18:16:18

我试图从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");
上面的

不起作用。有人能告诉我如何实现这一点吗?

从c#传递和访问Powershell参数

需要设置参数名称。像这样的代码应该可以工作:

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
      }
};

你有什么会工作。您没有提到您所说的above does not work是什么意思以及您的脚本是什么。

我尝试了c#代码与Powershell脚本:

param([string]$a)
write-host "test"
write-host $a

,然后输出:

test
some_parameter

。没有必要像其他答案提到的那样指定-File-paramter1,但这将取决于您的脚本做什么。

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

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

Get-ExecutionPolicy