0

我正在尝试通过将它们嵌入到 C# 代码中来运行 powershell 脚本,以便在 Sharepoint 站点上激活 (.wsp) 模板功能。我的代码如下

Command installCommand = new Command("Install-SPUserSolution");
installCommand.Parameters.Add("identity", "Template.wsp");
installCommand .Parameters .Add ("site", "siteURL");
// create Powershell runspace 
Runspace runspace = RunspaceFactory.CreateRunspace();

// open it 
runspace.Open()

// create a pipeline and feed it the script text 
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript(" Add-PsSnapin Microsoft.SharePoint.PowerShell");

pipeline.Commands.Add(installCommand);
//added just for reference since command dosen’t return anything
pipeline.Commands.Add("Out-String");

// execute the script 
Collection<PSObject> results = pipeline.Invoke();
//(This part of the code throws error saying Install-SPUserSolution is not a recognized cmdlet,function,script,…)

  // close the runspace 
 runspace.Close();

笔记:

  1. 我尝试将整个命令添加为脚本,但我得到了同样的错误。
  2. 我已经在 SharePoint 管理外壳命令提示符下尝试了该脚本,它在那里完美运行。
  3. 我在 WCF 的库类中使用上述代码。
  4. 我在 Visual Studio 中的每个子项目的所有平台都设置为“ANY CPU”,我使用的是 .net framework 3.5。
  5. 我还检查了管理 shell 中可用的帮助选项,并且命令“Install-SPUserSolution”确实作为 Microsoft.Sharepoint.Powershell 的 cmdlet 存在。
  6. 我正在使用客户端对象模型(COM)来完成我的任务,因此不能使用 C# 代码来激活功能,因为 COM 不支持它。

我完全不知道我可能做错了什么。任何帮助将不胜感激。

4

1 回答 1

0

我终于找到了我的问题的解决方案,因为我试图在 WCF 上运行此代码,所以我所要做的就是将 spadmin 帐户添加到我的应用程序池中,其中托管了 wcf,使用 sp.elevatepriviledges 委托和 turnh冒充

于 2012-08-02T09:44:23.540 回答