我正在尝试使用C#中的powershell重新启动VM。
首先,我尝试运行GET-VM命令。它在行中给出例外:
PSSnapInInfo psinfo = runspaceConfig.AddPSSnapIn("System.Management.Automation", out snapEx);
在下面给出的代码中。有人能告诉我我做错了吗。
异常消息:没有为Windows PowerShell版本2注册管理单元
我的代码:
Command command = new Command("Get-VM");
command.Parameters.Add("Name", "PIE01010299");
RunspaceConfiguration runspaceConfig = RunspaceConfiguration.Create();
PSSnapInException snapEx = null;
PSSnapInInfo psinfo = runspaceConfig.AddPSSnapIn("System.Management.Automation", out snapEx);
Runspace runSpace = RunspaceFactory.CreateRunspace(runspaceConfig);
runSpace.Open();
Pipeline pipeline = runSpace.CreatePipeline();
pipeline.Commands.Add(command);
Collection<PSObject> output = pipeline.Invoke();
runSpace.Close();
foreach (PSObject psObject in output)
{
Console.WriteLine(psObject.ToString());
}
答案 0 :(得分:1)
System.Management.Automation
不是snapin。它是核心PowerShell引擎组件。它默认加载,因为您的C#项目需要引用该程序集。您可能想要导入Hyper-V
模块,例如:
pipeline.Commands.AddCommand("Import-Module").AddArgument("Hyper-V");
pipeline.Invoke();
pipeline.Clear();
或者使用InitialSessionState.ImportPSModule
方法,然后将其与运行空间相关联。