【发布时间】: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