c# - 从 C# 应用程序将参数传递到原始 powershell 脚本

标签 c# powershell

我在将参数/自变量从 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/

相关文章:

c# - 使用 .NET CodeDom 代码生成时如何自定义自动生成的注释?

windows - 确保将 IIS AppPool 用户添加到 windows 组

powershell - 使用字符串引用时,引用 Powershell 数组索引会产生意外结果

c# - 使用异步/等待模式在 C# 5 中编写高度可扩展的 TCP/IP 服务器?

c# - 验证一个字符串是否包含一些确切的词

c# - LINQ 语句获取每个食谱及其成分列表

C# 正则表达式帮助 - 验证输入

windows - 在 PowerShell 中运行 openssl 命令

iis - 如何使用 PowerShell 设置 IIS ApplicationPool "Private Memory Limit"值

PowerShell Compare-Object 生成更改报告文件