我正在开发一个简单的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,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。