![](/img/trans.png)
[英]Error while executing Exchange powershell commands from C# program
[英]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.