繁体   English   中英

通过C#将模拟与Powershell和Exchange 2007一起使用时出错

[英]Error when using Impersonation with Powershell and Exchange 2007 from C#

我正在使用Windows系统服务使用Powershell在Ecxhange 2007中创建邮箱。 由于它作为系统服务运行,因此我使用模拟(使用advapi32.dll)包装了powershell调用,以具有适当交换权限的用户身份运行它,但是,我收到以下错误消息。

由于以下错误,无法加载Windows PowerShell管理单元Microsoft.Exchange.Management.PowerShell.Admin:'Microsoft.Exchange.Data.Directory.Globals'的类型初始值设定项引发了异常。

有一篇Microsoft KB文章( KB943937 )描述了此问题,解决方法是安装交换SP1 RU1,但我当前正在运行SP3 RU1。 我正在使用KB文章中指定的-DomainController参数,但仍收到相同的错误。

如果我以模拟用户的身份运行服务,则代码运行良好,因此我认为这不是代码问题。 我曾尝试在Windows XP和Server 2008上以同样的问题运行此程序。

在Powershell代码之前调用System.Security.Principal.WindowsIdentity.GetCurrent().Name ,我可以看到模拟工作正常。

有人遇到过吗?

对于将来遇到此问题的任何人,问题都在于模拟的开始位置。

您必须在添加管理单元之后但在创建运行空间之前开始模拟。

RunspaceConfiguration rsconfig = RunspaceConfiguration.Create();
PSSnapInException snapInException = null;
PSSnapInInfo info = rsconfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", out snapInException);
BeginImpersonation();
myRunspace = RunspaceFactory.CreateRunspace(rsconfig);

请参见文章的完整源代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM