【问题标题】:Custom Windows Service invokes Powershell to execute commands in exchange 32bit vs 64 bit issue?自定义 Windows 服务调用 Powershell 执行命令以交换 32 位与 64 位问题?
【发布时间】:2011-10-25 05:58:19
【问题描述】:

我开发了一个在 Visual Studio 2010 中开发的 Windows 服务,它执行 Exchange 2007 管理任务,并且我正在将它从 32 位开发服务器转移到 64 位生产服务器。该服务接受参数,然后调用 PowerShell 以执行 Exchange 2007 管理单元中的命令。

安装后在调试器和windows服务本身的开发环境中都能正常工作;不幸的是,当我将项目复制到新的 Windows 2008 R2 64 位服务器并构建它时,我只能让服务在 VS2010 调试器中工作。在 64 位服务器上作为 Windows 服务安装时,该服务始终失败,并显示来自代码的 PowerShell 组件的消息:

“没有为 Windows PowerShell 版本 2 注册任何管理单元”

调用 PowerShell 实例时,C# 代码在特定行失败:

运行空间配置 rc; PSSnapInInfo info = rc.AddPSSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", out warning);

正如我所提到的,只要我在 VS2010 调试器中运行代码,它就可以工作。

为了尝试解决这个问题,我尝试在谷歌上搜索错误并提出许多其他人遇到此问题,但没有人对此有明确的答案。按照其中一些帖子中留下的一些线索,我尝试了这些事情:

  • 我已删除并重新安装了 Exchange 2007 管理工具
  • 我已经从 Exchange 命令行管理程序 PowerShell 提示符处执行了“Get-PSSnapin”(并返回了一个看起来像这样的 Exchange 管理工具的列表 - 该版本说它适用于 PSVersion 1.0 而不是 2.0,但是,因为事情在我的 VS2010 调试器中工作,我认为 psversion 不是导致问题的原因): o 名称:Microsoft.Exchange.Management.PowerShell.Admin o PS版本:1.0 o 描述:Exchange Server 的管理任务
  • 我已尝试使用 C:\Windows\Microsoft.NET\Framework64\v2.0.50727 下的 INSTALLUTIL 将管理单元注册为 o Installutil c:\program files\microsoft\exchange server\bin\microsoft.exchange.management.dll

但我仍然坚持在调试器中运行代码,直到我可以让它作为服务运行。

从我读到的消息的基调来看,这是一个很多人都遇到过的问题,但目前还没有人能够完全解决。任何人都可以提供任何帮助吗?

【问题讨论】:

    标签: visual-studio-2010 powershell powershell-2.0 exchange-server-2007 powershell-1.0


    【解决方案1】:

    我在使用 C# 开发的服务管理 Exchange 2007 时遇到了非常相似的问题

    不仅要确保将您的代码编译为针对 x86 平台,还要确保您在调用 PowerShell 运行空间的类中具有对 C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0\System.Management.Automation.dll 文件的特定引用。

    【讨论】:

      【解决方案2】:

      该管理单元可能只有 32 位。重新编译您的服务以针对 x86 平台(如果您托管 PowerShell)或直接从 C:\Windows\SysWOW64\WindowsPowerShell\v1.0 运行 PowerShell.exe 的 32 位版本应该可以解决问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-16
        • 1970-01-01
        • 2010-09-16
        • 1970-01-01
        • 1970-01-01
        • 2011-02-18
        • 2011-12-12
        • 1970-01-01
        相关资源
        最近更新 更多