簡體   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