Get-VM
Hyper-V ホストで C# から呼び出されたコマンドレットを使用しようとしています。
明らかに、対応する PowerShell モジュールHyper-V
を最初にインポートする必要があります。ただし、インポートは失敗します。これは、モジュールが PowerShell 3.0 でのみサポートされているためと思われます (少なくとも、この記事からわかることです)。ただし、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\Modules\Hyper-V\Hyper-V.psd1' モジュールは、そのマニフェストに無効なメンバーが 1 つ以上含まれているため、インポートできません。有効なマニフェスト メンバーは ('ModuleToProcess', ...) です。無効なメンバー ('HelpInfoUri') を削除してから、モジュールのインポートを再試行してください。
C# で特定のバージョンの PowerShell を使用する方法はありますか?