C# 如何安装Exchange命令行管理程序模块以在代码中运行Powershell Exchange脚本

C# 如何安装Exchange命令行管理程序模块以在代码中运行Powershell Exchange脚本,c#,.net,asp.net,powershell,exchange-server,C#,.net,Asp.net,Powershell,Exchange Server,我正在努力让Exchange mManagement Shell命令在我的C代码中运行。这就是问题所在 我有权访问运行Exchange 2010的测试Exchange服务器 我已在Exchange命令行管理程序内的服务器上直接运行Exchange命令行管理程序命令 简单示例:获取邮箱 我创建了一个控制台应用程序来运行我的PS命令 我将exe文件放在Exchange服务器上并尝试运行它 我在PSSnapInInfo info=rsConfig.AddPSSnapIn代码行中得到一个错误:

我正在努力让Exchange mManagement Shell命令在我的C代码中运行。这就是问题所在

我有权访问运行Exchange 2010的测试Exchange服务器

我已在Exchange命令行管理程序内的服务器上直接运行Exchange命令行管理程序命令 简单示例:获取邮箱

我创建了一个控制台应用程序来运行我的PS命令

我将exe文件放在Exchange服务器上并尝试运行它

我在PSSnapInInfo info=rsConfig.AddPSSnapIn代码行中得到一个错误:

                //Creating and Opening a Runspace
            RunspaceConfiguration rsConfig = RunspaceConfiguration.Create();
            PSSnapInException snapInException = null;
            PSSnapInInfo info = rsConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", out snapInException);
            Runspace myRunSpace = RunspaceFactory.CreateRunspace(rsConfig);
            myRunSpace.Open();
有另一个帖子与这个完全相同的问题,但没有真正的答案,所以我开始这一个

问题很简单。我无法添加名为“Microsoft.Exchange.Management.PowerShell.Admin”的管理单元。我在网上读到的所有文档都说这是一个可以工作的命令。事实上,我发现这篇文章很直截了当,看起来很简单。“Microsoft.Exchange.Management.PowerShell.Admin”是否在Exchange 2010中消失?我是否应该引用另一个snapin?这应该很简单,但我无法克服这个错误

顺便说一句,我得到的错误是:“没有为Windows PowerShell版本2注册任何管理单元。”


任何帮助都将不胜感激。

假设服务器是64位的,它可能与管理单元的注册方式有关。例如,如果您正在运行x86版本的PowerShell,它将在WOW中运行。因此,当您运行InstallUtil来注册管理单元时,它会专门为x86注册,而这反过来又不适用于x64。假设这样,如果您的C#应用程序是专门为x86平台编译的,我敢打赌它会工作。这是一种解决方案,但并不总是可以接受的

确保正在运行正确版本的PowerShell(x86/x64),并使用正确版本的InstallUtil重新运行管理单元注册。对于x64,您需要运行位于.NETFramework64目录下的InstallUtil

检查PowerShell版本是否正确的一种方法是检查shell中的环境变量env:PROCESSOR\u ARCHITECTURE

x64:

x86:


我不同意投票结束这个问题,因为这是开发人员一直在努力解决的问题。这是一个开发人员的问题,而不是一个超级用户只是修补PowerShell。这是一个很好的信息,您有需要运行的InstallUtil的语法吗?我相信我的问题和你说的一模一样。我在x86平台上编写程序,工作时甚至无法访问64位机器。需要在计算机上安装Exchange才能运行InstallUtil吗?很抱歉提出这些问题,我是PowerShell的新手,正在使用Exchange。我不熟悉Exchange,因此无法直接与它交谈。总的来说,尽管最好是匹配平台。如果您知道Exchange位于x64上,因此PowerShell管理管理单元位于x64上,那么您可能希望将应用程序定位于x64。(您可以在x86机器上编写应用程序,并为x64进行编译)。一旦确定了管理单元安装在哪个PowerShell(x86或x64)下,您就可以专门针对该平台定位应用程序。假设已安装管理单元,则不再需要运行InstallUtil。
> get-item env:PROCESSOR_ARCHITECTURE
Name                           Value
----                           -----
PROCESSOR_ARCHITECTURE         AMD64
> get-item env:PROCESSOR_ARCHITECTURE
Name                           Value
----                           -----
PROCESSOR_ARCHITECTURE         x86