通过asp.net c#在PowerShell中使用Hyper-V Get-VM

时间:2015-06-16 14:46:37

标签: c# asp.net powershell hyper-v

我正在尝试编写一个Web界面,该界面将显示远程Hyper-V主机上的当前虚拟机。

到目前为止,我有这个

    protected void getVMS(object sender, GridViewCommandEventArgs e)
    {
        //command to run
        string cmdToRun = "get-vm -computername fsyovs02";

        var shell = PowerShell.Create();

        shell.Commands.AddScript(cmdToRun);

        var results = shell.Invoke();

           if (results.Count > 0)
           {

              var builder = new StringBuilder();

              foreach (PSObject vm in results)
              {

                  builder.Append(vm.BaseObject.ToString() + "\r\n");
              }

            ResultBox.Text = Server.HtmlEncode(builder.ToString());
          }
    }

这是回归的东西,但不是我想要的东西。对于每个VM,它返回行

  Microsoft.HyperV.PowerShell.VirtualMachine

我想要的是通过powershell准确显示它是如何做的。

任何人都可以帮助我 - 因为我忘记了!

非常感谢 标记

1 个答案:

答案 0 :(得分:0)

抱歉我不得不编辑我的答案,因为你无法从C#访问这些类型。然后,您应该使用PSObject上的Members集合来访问VirtualMachine的特定属性。请在您的情况下检查这种方法:

    foreach (PSObject vm in results)
    {       
           builder.Append(vm.Members["Name"].Value + "\r\n");
    }