参数未从代码传递

时间:2015-12-17 10:24:15

标签: c# powershell sharepoint

我正在开发一个简单的SharePoint页面,该页面从下拉列表中获取数据并将其作为参数传递给PowerShell脚本。但是在调试时遇到错误,我发现没有参数传递给脚本。

脚本文件放在我的layouts文件夹中,结构如下:

Param($param1, $param2, $param3)

我在C#代码中所做的是使用StreamReader读取文件,然后使用以下代码运行脚本:

using (PowerShell powerShell = PowerShell.Create()) {
    powerShell.Runspace.RunspaceConfiguration.AddPSSnapIn(_powershell,out snapInException);           
    powerShell.Commands.AddScript(the read script form streamreader); 
    powerShell.AddParameter("param1", SPContext.Current.Site.Url + "/");
    powerShell.AddParameter("param2", selectedText1);
    powerShell.AddParameter("param3", selectedText2);

    try {
        var results = powerShell.Invoke();
    } catch (Exception exp) { }                     
}

我收到一个错误,我的参数为null,我不知道为什么我的参数没有传递。难道我做错了什么?

另外,我尝试使用这个脚本运行ps1脚本:

RunspaceConfiguration runspaceCOnfig = RunspaceConfiguration.Create();
Runspace runspace = RunspaceFactory.CreateRunspace(runspaceCOnfig);
runspace.Open();

RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);
Pipeline pipeline = runspace.CreatePipeline();
Command myCommand = new Command(script path);

CommandParameter param1 = new CommandParameter("param1", SPContext.Current.Site.Url + "/");
CommandParameter param2 = new CommandParameter("param2", selectedText1);
CommandParameter param3 = new CommandParameter("param3", selectedText2);
myCommand.Parameters.Add(param1);
myCommand.Parameters.Add(param2);
myCommand.Parameters.Add(param3);

pipeline.Commands.Add(myCommand);

我收到此错误:

  

'path_to_script.ps1'未被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

0 个答案:

没有答案