我开发了一个在 Visual Studio 2010 中开发的 Windows 服务,它执行 Exchange 2007 管理任务,并且我正在将它从 32 位开发服务器移动到 64 位生产服务器。该服务接受参数,然后调用 PowerShell 以执行 Exchange 2007 管理单元中的命令。
安装后,它在调试器和 Windows 服务本身的开发环境中都能正常工作;不幸的是,当我将项目复制到新的 Windows 2008 R2 64 位服务器并构建它时,我只能让服务在 VS2010 调试器中工作。在 64 位服务器上作为 Windows 服务安装时,该服务始终失败,并显示来自代码的 PowerShell 组件的消息,内容如下:
“没有为 Windows PowerShell 版本 2 注册任何管理单元”</p>
调用 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 PSVersion:1.0 o 描述:Exchange Server 的管理任务
- 我尝试在 C:\Windows\Microsoft.NET\Framework64\v2.0.50727 下使用 INSTALLUTIL 注册管理单元作为安装工具 c:\program files\microsoft\exchange server\bin\microsoft.exchange.management.dll
但我仍然坚持在调试器中运行代码,直到我可以让它作为服务工作。
从我读到的消息的基调来看,这是一个很多人都遇到过的问题,但目前还没有人能够完全解决。任何人都可以提供任何帮助吗?