我在将参数/自变量从 C# 应用程序传递到我的 powershell 脚本时遇到问题。问题是我的数据库中存储了一个要执行的 powershell 脚本。该脚本接受参数,而它的 this 似乎不接受我传入的参数。下面是我正在做的一个例子。 tasjRun.Task.Script 是实际脚本而不是 ps1 文件的路径,我认为这可能是问题所在?我可以将参数传递给原始脚本吗?
非常感谢
理查德
var runspaceConfiguration = RunspaceConfiguration.Create();
var runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
runspace.Open ();
var pipeline = runspace.CreatePipeline();
var myCommand = new Command(taskRun.Task.Script, true);
foreach (var kvp in taskRun.GetScriptParameters())
{
myCommand.Parameters.Add(new CommandParameter(kvp.Key, kvp.Value));
}
pipeline.Commands.Add(myCommand);
var result = pipeline.Invoke().FirstOrDefault();
最佳答案
我可以告诉您您的方法原则上是可行的,例如:
var runspaceConfiguration = RunspaceConfiguration.Create();
var runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
runspace.Open();
var pipeline = runspace.CreatePipeline();
var script = "param($p1,$p2) \"p1 is $p1, p2 is $p2\"";
var myCommand = new Command(script, true);
myCommand.Parameters.Add(new CommandParameter("p1", DateTime.Now));
myCommand.Parameters.Add(new CommandParameter("p2", Math.PI));
pipeline.Commands.Add(myCommand);
var result = pipeline.Invoke().FirstOrDefault();
Console.WriteLine(result);
输出:
p1 is 12/16/2011 10:24:48, p2 is 3.14159265358979
因此我们需要查看您的脚本,以便更好地确定为什么这对您不起作用。
关于c# - 从 C# 应用程序将参数传递到原始 powershell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8534524/