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

Hyper-V Get-VM in powershell via asp.net c#

我正在尝试编写一个 Web 界面来显示远程 Hyper-V 主机上的当前 VM。

到目前为止,我有这个

    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 准确显示它的工作方式。

任何人都可以帮助我 - 因为我快疯了!

非常感谢 马克

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

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