早上好,我在ASP.NET中加载一个名为MSOnline的Powershell模块时遇到了一个问题 关注此链接后:
这是一个在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这太令人沮丧......
答案 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位,它的效果也很好。
将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;
考虑到我在Windows 8.1和64位的基础上在VS2013上运行它。
执行此操作后,MSOnline模块列在Get-Module -ListAvailable(来自webapp,而不仅仅是powershell)中,因此我可以导入并使用它。