从C#运行Powershell脚本,将wsp解决方案添加到sharepoint应用程序
本文关键字:添加 解决方案 sharepoint 应用程序 wsp 运行 Powershell 脚本 | 更新日期: 2023-09-27 18:25:25
我有一个正在运行并经过测试的.ps1脚本,用于将WSP解决方案添加到特定的SharePoint web应用程序中。
现在我正在尝试运行这个脚本,并使用C#向它发送参数。
脚本的第一行:
param([String]$wsppath , [String]$webappurl)
Add-PsSnapin Microsoft.SharePoint.PowerShell
#Do not modify anything in the script from here onwards
function Get-ScriptDirectory
{
$Invocation = (Get-Variable MyInvocation -Scope 1).Value
Split-Path $Invocation.MyCommand.Path
} ......
我使用以下方法将参数发送到脚本并运行它:
public static bool ExecutePowerShellScript(List<String> args)
{
try
{
// create Powershell runspace
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
RunspaceInvoke runSpaceInvoker = new RunspaceInvoke(runspace);
runSpaceInvoker.Invoke("Set-ExecutionPolicy Unrestricted");
String powershellScriptPath = System.AppDomain.CurrentDomain.BaseDirectory + "AutomateDeploymentScript.ps1";
// create a pipeline and feed it the script text
Pipeline pipeline = runspace.CreatePipeline();
Command command = new Command(powershellScriptPath);
foreach (var arg in args)
{
command.Parameters.Add(null, arg);
}
pipeline.Commands.Add(command);
pipeline.Invoke();
runspace.Close();
return true;
}
catch (Exception ex)
{
LoggingManager.LogException(ex);
return false;
}
}
它抛出:
System.Management.Automation.CommandNotFoundException:术语"add spsolution"未被识别为cmdlet、函数、脚本文件或可操作程序的名称。
有什么建议吗?
我不熟悉Sharepoint PS脚本,但我猜Add SPSolution来自PS Sharepoint模块。我进一步猜测,您在测试脚本的PS会话中加载了该模块——手动或使用您的配置文件。
然而,以编程方式执行PS不会运行您的配置文件。因此,您需要将脚本所依赖的PS命令的调用添加到程序中。它可能很简单,只需通过runSpaceInvoker.Invoke
添加ipmo SharepointModuleOrWhateverItIsCalled
请检查应用程序配置是否设置为任何cpu或x64,并且是否正在调用64位powershell,否则可能会引发相同的错误。