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

时间:2010-08-26 14:25:16

标签: c# .net asp.net powershell exchange-server

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

我可以访问运行Exchange 2010的测试Exchange Server。

我已直接在Exchange Mgmt Shell内的服务器上运行Exchange Mgmt Shell命令      简单示例:get-mailbox

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

我将exe文件放在Exchange Server上并尝试运行它

我在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”的管理单元。我在网上看到的所有文档都说这是可行的命令。事实上,我发现这篇文章http://msdn.microsoft.com/en-us/library/bb332449(EXCHG.80).aspx非常简单,看起来非常简单。 “Microsoft.Exchange.Management.PowerShell.Admin”在Exchange 2010中消失了吗?我应该引用另一个snapin吗?这应该很简单,但我无法克服这个错误。

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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

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

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

检查您是否使用正确版本的PowerShell的一种方法是检查shell中的环境变量env:PROCESSOR_ARCHITECTURE。

64:

> get-item env:PROCESSOR_ARCHITECTURE
Name                           Value
----                           -----
PROCESSOR_ARCHITECTURE         AMD64

86:

> get-item env:PROCESSOR_ARCHITECTURE
Name                           Value
----                           -----
PROCESSOR_ARCHITECTURE         x86