我有以下代码创建一个加载了 Exchange 2010 管理单元的 PowerShell 运行空间。
Dim runspaceConfig = RunspaceConfiguration.Create()
Dim snapInException As PSSnapInException = Nothing
runspaceConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.E2010", snapInException)
Dim runspace = RunspaceFactory.CreateRunspace(runspaceConfig)
runspace.Open()
自安装 Visual Studio 2012 以来,在执行将管理单元添加到运行空间配置的行时,我开始收到以下错误。
System.Management.Automation.Runspaces.PSSnapInException occurred
HResult=-2146233087
Message=Cannot load Windows PowerShell snap-in Microsoft.Exchange.Management.PowerShell.E2010 because of the following error: The type initializer for 'Microsoft.Exchange.Data.Directory.Globals' threw an exception.
Source=System.Management.Automation
WasThrownFromThrowStatement=False
StackTrace:
at System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.LoadCustomPSSnapIn(PSSnapInInfo mshsnapinInfo)
at System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.LoadPSSnapIn(PSSnapInInfo mshsnapinInfo)
at System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.LoadPSSnapIn(PSSnapInInfo mshsnapinInfo, PSSnapInException& warning)
at System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.DoAddPSSnapIn(String name, PSSnapInException& warning)
at System.Management.Automation.Runspaces.RunspaceConfiguration.AddPSSnapIn(String name, PSSnapInException& warning)
我已经能够确认 nlog 以某种方式导致了这个问题。在创建 powershell 运行空间之前创建 nlog 记录器的组合会导致错误。
如果我从我的应用程序配置中删除 nlog 配置部分并仅创建一个空的 nlog 记录器,则管理单元加载时不会出现错误。此外,如果我将 nlog 配置保留在我的应用程序配置中但不创建 nlog 记录器,则管理单元也会成功加载。
- 我已经尝试在 x64 和 x86 中构建项目。
- 我已经重新安装了交易所管理工具。
- 我曾尝试在交换环境中的另一台机器上进行测试。
如果有人可以提供任何可以帮助我解决此问题的建议,我将不胜感激。
谢谢