尝试在ASP.NET Web应用程序中加载Powershell模块“MSOnline”时出错

时间:2014-10-19 07:51:51

标签: c# asp.net powershell module office365-apps

早上好,我在ASP.NET中加载一个名为MSOnline的Powershell模块时遇到了一个问题 关注此链接后:

  • http://www.msdigest.net/2012/03/how-to-connect-to-office-365-with-powershell/
  • http://blogs.technet.com/b/educloud/archive/2013/01/23/managing-office-365-for-education-using-powershell.aspx
  • 这是一个在C#中通过Code Behind运行脚本的Button。当我试图加载模块时,它抛出异常。

     protected void Bexecute_Click(object sender, EventArgs e)
        {
    
            //            Import-Module MSOnline
            try
            {
                //Loading MSOnline using a InitialSessionState
                InitialSessionState iss = InitialSessionState.CreateDefault();
                iss.ImportPSModule(new string[] { "MSOnline" });
                //Before the solution iss has an exception of "not found" the MSOnline Module
    
                //Create a runspace
                Runspace test = RunspaceFactory.CreateRunspace(iss);
    
                //Open a Runspace
                test.Open();
                //Create a Pipeline 
                Pipeline pipeLine = test.CreatePipeline();
    
                //Create the StringBuilder to get append the script
                StringBuilder script = new StringBuilder();
    
                //Take the script from Tscript (TextBoxt with ID="Tscript" in default.aspx
                script.AppendLine(@"Get-Module -ListAvailable");
                //Add the script and commands to the pipeline;
    
                pipeLine.Commands.AddScript(script.ToString());
    
                //Execute script and get the PSObject Results collection
                Collection<PSObject> resultObjects = pipeLine.Invoke();
    
                //Close the Runspace
                test.Close();
    
                if (resultObjects.Count > 0)
                {
                /*** DO SOMETHING WITH THE PSObjects ***/
                }
            }
            catch (System.Management.Automation.RuntimeException ex)
            {
                status.AppendLine(ex.Message);
            }
        }
    

    我需要的是可能出错的地方。我引用了system.management.automation(dll)。但我不知道为什么没有列出它是否安装了它。谢谢你的帮助。

    我在以下位置找到了MSOnline .dll文件:C:\ windows \ system32 \ WindowsPowerShell \ v1.0 \ Modules \ MSOnline 但是,如果我尝试从visual studio手动添加它,那么说“MSOnline不存在&#34;”。 这很奇怪,因为它们对文件夹都有相同的权限。发生了什么! :S这太令人沮丧......

    1 个答案:

    答案 0 :(得分:3)

    要在x64位体系结构下运行ASP.NET Web应用程序,您应该这样做:

    1,需要下载并安装MS Online Services Assistant Microsoft Online Services登录助手 - 64位版本http://go.microsoft.com/fwlink/?linkid=236300

    2.需要下载并安装用于PowerShell的MS Online模块 适用于Windows PowerShell的Microsoft Online Services模块(64位版本)http://go.microsoft.com/fwlink/?linkid=236297

    完成此步骤后,您可以运行:get-module -ListAvailable,并列出模块MSOnline。 但它仍然没有在64位SO上工作。原始海报使用的是win8 64位,我使用的是win 8.1 64位,它的效果也很好。

    1. 将MSOnline模块文件夹从(Path1)复制到(Path2)

      (Path1) - &gt; &#34; C:\ Windows \ System32下\ WindowsPowerShell \ V1.0 \模块\ MSOnline&#34;

        (Path2) - &gt; &#34; C:\的Windows \ Syswow64资料\ WindowsPowerShell \ V1.0 \模块\ MSOnline&#34;

    2. 考虑到我在Windows 8.1和64位的基础上在VS2013上运行它。

      执行此操作后,MSOnline模块列在Get-Module -ListAvailable(来自webapp,而不仅仅是powershell)中,因此我可以导入并使用它。