我試圖使用Get-VM
Cmdlet的從C#叫做Hyper-V主機上的特定版本。呼叫的PowerShell從C#
顯然,根據PowerShell的模塊Hyper-V
必須首先導入。然而,導入失敗 - 顯然是因爲該模塊僅在PowerShell 3.0上受支持(至少這是我從this article得出的結果)。不過,System.Management.Automation使用的PowerShell似乎是2.0版本。
InitialSessionState iss = InitialSessionState.CreateDefault();
iss.ImportPSModule(new string[] { "Hyper-V" });
Runspace runSpace = RunspaceFactory.CreateRunspace(iss);
runSpace.Open();
foreach (var err in (ArrayList)runSpace
.SessionStateProxy.PSVariable.GetValue("Error"))
Console.WriteLine(err.ToString());
runSpace.Close();
回報
的 'C:\ WINDOWS \ SYSTEM32 \ WindowsPowerShell \ V1.0 \模塊\的Hyper-V \超V.psd1' 模塊不能因爲它的進口艙單包含無效的一個或多個成員 。有效的清單成員是('ModuleToProcess',...)。 刪除無效的成員('HelpInfoUri'), 然後嘗試再次導入模塊。
有沒有辦法在C#中使用特定版本的PowerShell?
這可能會工作,但我需要我的應用程序在.NET 3.5,以及運行 - 我不能參照3.0.0.0裝配直接,因爲它是.NET 4+ 不過+1了一絲正確的方向,謝謝 – 2013-04-23 09:45:19