从C#传递和访问Powershell参数#
问题描述:
我想从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");
上述不起作用。有人可以告诉我如何做到这一点?
答
您需要设置参数名称。像这样的东西应该工作:
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
和你的脚本是什么。
我试图用PowerShell脚本的C#代码:
param([string]$a)
write-host "test"
write-host $a
,它给了输出:
test
some_parameter
预期。没有必要指定-File
和-paramter1
类似于其他答案的提及,但取决于脚本的功能。
答
您是否将执行策略设置为不受限制或允许您执行脚本。默认情况下,Powershell将脚本设置为不受限制,以防止恶意脚本运行。
运行此命令时,PowerShell是运行管理员:
Get-ExecutionPolicy
什么,准确地说,“不工作”你的现有代码? –