0

我正在以任何 CPU 为目标在 3.5 框架中运行 C# Web 应用程序。我的机器配置:带有 64 位操作系统的 Windows 7 Visual Studio 2010 SharePoint 2010

我正在尝试从我的 Web 应用程序调用 SharePoint PowerShell 脚本。但是失败了。下面是我的代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using System.IO;
using System.Collections.ObjectModel;
using System.Text;


namespace WebApplication3
{
    public partial class test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

    protected void Button1_Click(object sender, EventArgs e)
    {

        try
        {
            string scriptText = ReadPowerShellScript("D:\\SiteHierarchy_project\\scriptSC.ps1");
            RunspaceConfiguration rsConfig = RunspaceConfiguration.Create();
            PSSnapInException snapInException = null;
            Runspace runspace = RunspaceFactory.CreateRunspace();
            runspace.Open();

            PSSnapInInfo info = rsConfig.AddPSSnapIn("Microsoft.SharePoint.Powershell", out snapInException);
            Pipeline pipeline = runspace.CreatePipeline();
            string scriptSnapIn = "Get-PsSnapin -Registered";
            pipeline.Commands.AddScript(scriptSnapIn);

            Runspace RunSpace = RunspaceFactory.CreateRunspace(rsConfig);
            RunSpace.Open();
            Pipeline pipeLine = RunSpace.CreatePipeline();
            Command scriptCommand = new Command(scriptText);
            pipeLine.Commands.AddScript(scriptText);

            // execute the script        
            //  Collection<PSObject> commandResults = pipeLine.Invoke();
            pipeLine.Invoke();
            // close the runspace        
            RunSpace.Close();
        }
        catch (Exception ex)
        { }

    }

    public string ReadPowerShellScript(string Script)
    {
        //Read script         
        //StreamReader objReader = new StreamReader(Server.MapPath(Script));
        StreamReader objReader = new StreamReader(Script);
        string strContent = objReader.ReadToEnd();
        objReader.Close();
        return strContent;
    } 
}

}

并得到以下错误。

“此计算机上未安装 Windows PowerShell 管理单元‘Microsoft.SharePoint.Powershell’。”

请让我知道,我在哪里做错了

谢谢,桑迪普

4

3 回答 3

0

只是一个想法;创建批处理文件以调用 .ps1 文件。您可以使用 System.Diagnostics.ProcessStartInfo 调用批处理文件,而不是直接从代码调用 .ps1 文件;

于 2012-08-03T05:35:13.410 回答
0

您是否在运行此代码的 Web 服务器上安装了 sharepoint?错误消息非常简单。

于 2012-07-27T13:34:57.903 回答
0

解决方案称为 64 位 powershell,而不是仅适用于 VS 2010。

我已经从批处理文件中调用了 Powershell 脚本,而我的批处理文件正在调用 64 位 poweshell。

在我的批处理文件中,我写了 %windir%\sysnative\windowspowershell\v1.0\powershell -File "C:\filepath\Poweshellfile.ps1" auto

现在应用程序工作正常。

Sandeep Tiwari MCTS SharePoint 2010

于 2012-08-21T05:29:33.480 回答