简体   繁体   English

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

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

I am trying to write a web interface that will show the current VMs on a remote Hyper-V host. 我试图编写一个Web界面,以显示远程Hyper-V主机上的当前VM。

So far, I have this 到目前为止,我有这个

    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());
          }
    }

This is returning something, but not what I want. 这是返回的东西,但不是我想要的。 For each VM, it is returning the line 对于每个VM,它正在返回行

  Microsoft.HyperV.PowerShell.VirtualMachine

What I want is it to display exactly how it does via powershell. 我想要的是通过powershell确切显示它的工作方式。

Can anyone help me please - as I am going out of my mind! 有人可以帮我吗-我快要疯了!

Many Thanks Mark 非常感谢马克

Sorry had to edit my answer as you cannot access those types from C#. 抱歉,由于您无法从C#访问这些类型,因此不得不编辑我的答案。 You should then use the Members collection on PSObject to access particular properties of the VirtualMachine. 然后,您应该使用PSObject上的Members集合来访问VirtualMachine的特定属性。 Please check this approach in your case: 请根据您的情况检查此方法:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM