【问题标题】:How do I install the Exchange Management Shell Module to run Powershell Exchange Scripts in code如何安装 Exchange 命令行管理程序模块以在代码中运行 Powershell Exchange 脚本
【发布时间】:2011-04-04 07:33:46
【问题描述】:

我正在努力让 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 中消失了?我应该引用另一个管理单元吗?这应该很简单,但我无法克服这个错误。

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

任何帮助将不胜感激。

【问题讨论】:

  • 我不同意结束这个问题的投票,因为这是开发人员一直在努力解决的问题。这是一个开发人员的问题,而不是只是修补 PowerShell 的超级用户。

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


【解决方案1】:

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

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

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

x64:

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

x86:

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

【讨论】:

  • 这是很好的信息,你有需要运行的 InstallUtil 的语法吗?我相信我的问题正是你所说的。我正在 x86 平台上编写程序,我什至无法在工作中使用 64 位机器。是否需要在机器上安装 Exchange 才能运行 InstallUtil?对于菜鸟问题​​,我很抱歉,我是 PowerShell 的新手并使用 Exchange。
  • 我不熟悉 Exchange,因此无法直接与它交谈。一般来说,虽然它最好匹配平台。如果您知道 Exchange 在 x64 上,因此 PowerShell 管理管理单元是 x64,那么您可能希望将您的应用程序定位为 x64。 (您可以在 x86 机器上编写应用程序并将其编译为 x64)。一旦您最终确定了管理单元安装在哪个 PowerShell(x86 或 x64)下,您就可以专门针对该平台定位您的应用程序。假设上述情况,不再需要运行 InstallUtil,因为该管理单元已安装。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-11
  • 1970-01-01
  • 2021-09-27
  • 1970-01-01
  • 2017-09-02
  • 2018-10-12
  • 1970-01-01
相关资源
最近更新 更多