【发布时间】:2013-04-22 13:26:03
【问题描述】:
我正在尝试在 Hyper-V 主机上使用从 C# 调用的 Get-VM Cmdlet。
显然,必须先导入相应的 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\Modules\Hyper-V\Hyper-V.psd1' 无法导入模块,因为其清单包含一个或多个成员 无效。有效的清单成员是 ('ModuleToProcess', ...)。 删除无效的成员('HelpInfoUri'), 然后尝试再次导入模块。
有没有办法在 C# 中使用特定版本的 PowerShell?
【问题讨论】:
标签: c# powershell hyper-v powershell-module