0

任意のCPUをターゲットとして3.5フレームワークでC#Webアプリケーションを実行しています。My Machine Config:64ビットOSを搭載したWindows 7 Visual Studio 2010 SharePoint 2010

WebアプリケーションからSharePointPowerShellスクリプトを呼び出そうとしています。しかし失敗しました。以下は私のコードです。

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;
    } 
}

}

以下のエラーが発生します。

「WindowsPowerShellスナップイン「Microsoft.SharePoint.Powershell」がこのマシンにインストールされていません。」

私が間違っているところを教えてください

ありがとう、Sandeep

4

3 に答える 3

0

ただのアイデア。.ps1ファイルを呼び出すバッチファイルを作成します。また、コードから直接.ps1ファイルを呼び出す代わりに、System.Diagnostics.ProcessStartInfoを使用してバッチファイルを呼び出すことができます。

于 2012-08-03T05:35:13.410 に答える
0

このコードを実行している Web サーバーに SharePoint がインストールされていますか? エラーメッセージは非常に簡単です。

于 2012-07-27T13:34:57.903 に答える
0

The Solution is call the 64 bit powershell than only it works from the VS 2010.

I had called the Powershell script from the batch file and my batch file is calling the 64 bit poweshell.

In my batch file i wrote %windir%\sysnative\windowspowershell\v1.0\powershell -File "C:\filepath\Poweshellfile.ps1" auto

Now application is working fine.

Sandeep Tiwari MCTS SharePoint 2010

于 2012-08-21T05:29:33.480 に答える