C# 仅使用Msvm Computersystem for hyper-v with C列出主机信息#

C# 仅使用Msvm Computersystem for hyper-v with C列出主机信息#,c#,controls,wmi,hyper-v,C#,Controls,Wmi,Hyper V,我不熟悉WMI类和hyper-v,当我试图通过Msvm_ComputerSystem获取主机和所有虚拟机的信息时,结果只显示了主机信息,代码如下所示(只是在线提供的非常简单的示例),但是我可以在使用get VM的PowerShell l命令时获取虚拟机信息,我正在win 10上使用hyper-v,并尝试在本地控制它。任何帮助都将不胜感激 ManagementScope scope = new ManagementScope("\\root\\virtualization\\V2"); strin

我不熟悉WMI类和hyper-v,当我试图通过Msvm_ComputerSystem获取主机和所有虚拟机的信息时,结果只显示了主机信息,代码如下所示(只是在线提供的非常简单的示例),但是我可以在使用get VM的PowerShell l命令时获取虚拟机信息,我正在win 10上使用hyper-v,并尝试在本地控制它。任何帮助都将不胜感激

ManagementScope scope = new ManagementScope("\\root\\virtualization\\V2");
string query = string.Format("SELECT * FROM Msvm_ComputerSystem");
ObjectQuery vmquery = new ObjectQuery(query);
ManagementObjectSearcher vmsearcher = new ManagementObjectSearcher(scope, vmquery);
ManagementObjectCollection vmCollection = vmsearcher.Get();
if (vmCollection.Count == 0)
    {
        Console.WriteLine("No virtual machine found");
    }
ManagementObject vm = null;
foreach (ManagementObject instance in vmCollection)
    {
      vm = instance;
      Console.WriteLine("\nName: {0} \nStatus:{1} \nDescription: ",
                vm["ElementName"].ToString(),
                vm["EnabledState"].ToString(),
                vm["Description"].ToString());


        }
    }

使用来自MS的WMI代码创建者从下载

它将帮助你检查一切

我的C#示例代码用于获取VM列表

public void listvms()
    {
        ManagementObjectSearcher searcher =
                  new ManagementObjectSearcher("\\root\\virtualization\\V2",
                  "SELECT ElementName FROM Msvm_ComputerSystem where Description='Microsoft Virtual Machine'");           
        if (searcher.Get().Count != 0)
        {
            foreach (ManagementObject queryObj in searcher.Get())
            {
                vmnamelist.Items.Add(queryObj["ElementName"]);
            }
        }            
    }

使用来自MS的WMI代码创建者从下载

它将帮助你检查一切

我的C#示例代码用于获取VM列表

public void listvms()
    {
        ManagementObjectSearcher searcher =
                  new ManagementObjectSearcher("\\root\\virtualization\\V2",
                  "SELECT ElementName FROM Msvm_ComputerSystem where Description='Microsoft Virtual Machine'");           
        if (searcher.Get().Count != 0)
        {
            foreach (ManagementObject queryObj in searcher.Get())
            {
                vmnamelist.Items.Add(queryObj["ElementName"]);
            }
        }            
    }

非常感谢您的建议,无论如何,我已经通过以管理员身份运行visual studio解决了问题,然后列出了所有信息。我们必须以管理员身份运行,这是我们需要做的所有事情。非常感谢您的建议,无论如何,我通过以管理员身份运行visual studio解决了问题,然后列出所有信息。必须以管理员身份运行,这是我们需要执行的所有操作,如重复:我可以通过为我的应用程序的.dotnet用户分配“Hyper-V管理员”角色来解决我的问题。似乎重复:我可以通过为我的应用程序的.dotnet用户分配“Hyper-V管理员”角色来解决我的问题“Hyper-V管理员”角色。