我正在尝试Get-VM
在 Hyper-V 主机上使用从 C# 调用的 Cmdlet。
Hyper-V
显然,必须先导入相应的 PowerShell 模块。但是,导入失败 - 显然是因为该模块仅在 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”模块,因为其清单包含一个或多个无效成员。有效的清单成员是 ('ModuleToProcess', ...)。删除无效的成员('HelpInfoUri'),然后再次尝试导入模块。
有没有办法在 C# 中使用特定版本的 PowerShell?