簡體   English   中英

從C#運行Exchange Powershell命令

[英]Run Exchange Powershell command from C#

我試圖在C#中運行EMC命令。 我從我的個人電腦上運行它,它上面安裝了交換管理工具。

我們的交換服務器已在2007上運行。

問題是,當我運行Powershell或EMC時,我需要以具有Exchange Server 2007權限的其他用戶身份運行,因為我的個人配置文件沒有這些權限。

話雖這么說,這是我在個人電腦上運行的代碼:

RunspaceConfiguration config = RunspaceConfiguration.Create();
PSSnapInException snapEx = null;

PSSnapInInfo info = config.AddPSSnapIn("Microsoft.Exchange.Management.Powershell.Admin", out snapEx);

Runspace runspace = RunspaceFactory.CreateRunspace(config);
runspace.Open();

Command createCMD = new Command("Get-Mailbox ID");

Pipeline pipe = runspace.CreatePipeline();
pipe.Commands.Add(createCMD);

Collection<PSObject> results = pipe.Invoke();

我得到的錯誤是:

此計算機上未安裝Windows PowerShell管理單元Microsoft.Exchange.Management.Powershell.Admin

當我嘗試添加Microsoft.Exchange.Management.Powershell.Admin snapIn時,我得到它。

我覺得這與我個人資料的權限有關,但我不完全確定。 如果是真的,我該如何解決這個問題。


編輯

我說它聽起來像權限的原因是因為我能夠打開PowerShell並添加snapin。 但是,當我運行諸如get-mailboxstatistics myUserId之類的命令時,它會拋出一條錯誤,指出MyServer\\MyStorageGroup get-mailboxstatistics myUserId不存在。 但是,當我shift-rightCLick並以不同的用戶身份運行並使用我的Exchange管理員帳戶的憑據時,我可以運行這些命令。

如果錯誤表明它未安裝在您的計算機上,為什么您懷疑它與權限有關?

正如本文所述 ,請檢查您是否安裝了2007版本的工具,因為2010版本中沒有相關的Snapin。

請嘗試以下步驟:

打開您選擇的PowerShell編輯器並在那里添加PSSnapin。 如果它可以工作,Snapin是可用的,如果沒有,它真的沒有安裝在你的機器上。

如果可用,請嘗試將構建配置從x86設置為64位,反之亦然。

最終,您可以手動安裝.dll。 參考Keith hill的這個答案 ,您必須發出以下Powershell命令

$snapinPath = 'Microsoft.Exchange.Management.PowerShell.Admin.dll'
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe /i $snapinPath

像這樣的錯誤通常是32位/ 64位問題。 例如,snapin可能注冊為32位,C#程序為64位,反之亦然。

有時您可以通過運行其他版本的InstallUtil來解決此問題,例如

$snapinPath = 'Microsoft.Exchange.Management.PowerShell.Admin.dll'
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe /i $snapinPath

在確定之后,我認為你將在創建命令方面遇到另一個問題。 創建命令時不指定參數。 相反,你寫了類似的東西:

Command createCMD = new Command("Get-Mailbox");
createCMD.Parameters.Add(null, "ID");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM