2013-10-10 49 views
1

我正嘗試在C#中使用powershell重新啓動VM。使用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()); 
      } 

回答

1

​​不是一個管理單元。它是核心的PowerShell引擎程序集。它是默認加載的,因爲您的C#項目需要引用該程序集。你可能想導入Hyper-V模塊例如爲:

pipeline.Commands.AddCommand("Import-Module").AddArgument("Hyper-V"); 
pipeline.Invoke(); 
pipeline.Clear(); 

或者使用InitialSessionState.ImportPSModule方法,然後關聯與運行空間。

相關問題