2011-11-24 62 views
6

我有一個PowerShell腳本存儲在一個名爲「腳本」與內容串:如何添加PowerShell的管理單元在C#

get-user | out-file C:\Users\user\Desktop\user.txt -append 

我的C#代碼:

RunspaceConfiguration runConfig = RunspaceConfiguration.Create(); 
       PSSnapInException psEx = null; 
       runConfig.AddPSSnapIn("VMWare.View.Broker", out psEx); 
       Runspace runspace = RunspaceFactory.CreateRunspace(runConfig); 
       runspace.Open(); 
       Pipeline pipeline = runspace.CreatePipeline(); 
       pipeline.Commands.AddScript(script); 
       Collection<PSObject> results = new Collection<PSObject>(); 
       results = pipeline.Invoke(); 
       runspace.Close(); 

如果我調試代碼中,我得到以下異常:

No snap-ins have been registered for Windows Powershell Version 2 

如果我手動運行該腳本,並添加管理單元,它工作正常

+0

我得到'因爲以下錯誤無法加載Windows PowerShell管理單元Microsoft.Exchange.Management.PowerShell.E2010:'Microsoft.Exchange.Data.Directory.Globals'的類型初始值設定項引發異常。有沒有人遇到過這種情況? – BRogers

+0

問一個新問題,@BRogers - 這不是正確的地方。 – x0n

回答

5

該錯誤消息還意味着您正試圖從64位powershell實例中加載32位管理單元(或反之亦然)。在您的情況下,您需要編譯您的程序以確定正確的位:x86。 AnyCPU將默認爲您的機器的位數,即64位。

+0

當我切換到x86時,我得到'無法加載文件或程序集'MyProject'或它的一個依賴項。試圖加載格式不正確的程序。 '使用VS2010。有什麼建議麼? – BRogers

1

我有類似的問題... 我試圖從控制檯應用程序執行自定義powershell cmdlet。我證實我的控制檯設置爲4.0框架,powershell是3.0。 事實證明,該問題是「喜歡32位」設置在控制檯的bild選項卡設置爲true。我沒有選中它,一切正常!

相關問題