[英]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.