从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");
上面的不起作用。有人能告诉我如何实现这一点吗?
需要设置参数名称。像这样的代码应该可以工作:
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