我正在尝试从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");
以上不起作用。有人可以告诉我如何实现这个目标吗?
答案 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