c#Install-SPUserSolution中嵌入的powershell脚本无法识别

时间:2012-07-12 11:49:49

标签: c# sharepoint powershell sharepoint-2010

我试图通过将它们嵌入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管理shell中尝试过该脚本 命令提示符,它在那里工作得很好。
  3. 我正在使用上述内容 WCF的库类中的代码。
  4. 我所有的平台 Visual Studio中的子项目设置为“任何CPU”,我正在使用 .net framework 3.5。
  5. 我还检查了可用的帮助选项 在管理shell和命令“Install-SPUserSolution”确实 作为Microsoft.Sharepoint.Powershell的cmdlet存在。
  6. 我正在使用 客户端对象模型(COM)来完成我的任务,因此无法使用C# 用于激活功能的代码,因为COM不支持它。
  7. 我完全不知道自己可能做错了什么。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我终于找到了解决问题的方法, 由于我试图在WCF上运行此代码,我不得不这样做 将spadmin帐户添加到托管wcf的应用程序池中, 使用sp.elevatepriviledges委托 和模仿的结果