从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、函数、脚本文件或可操作程序的名称。

有什么建议吗?

从C#运行Powershell脚本,将wsp解决方案添加到sharepoint应用程序

我不熟悉Sharepoint PS脚本,但我猜Add SPSolution来自PS Sharepoint模块。我进一步猜测,您在测试脚本的PS会话中加载了该模块——手动或使用您的配置文件。

然而,以编程方式执行PS不会运行您的配置文件。因此,您需要将脚本所依赖的PS命令的调用添加到程序中。它可能很简单,只需通过runSpaceInvoker.Invoke 添加ipmo SharepointModuleOrWhateverItIsCalled

请检查应用程序配置是否设置为任何cpu或x64,并且是否正在调用64位powershell,否则可能会引发相同的错误。

相关文章: