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

本文关键字:主机 信息 with Msvm-Computersystem for hyper-v | 更新日期: 2023-09-27 18:34:14

我是WMI类和hyper-v的新手,当我尝试通过Msvm_ComputerSystem获取主机和所有虚拟机的信息时,结果只显示主机信息,代码如下所示(只是在线提供的非常简单的示例),但是当我使用Get-VM的powershel 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());

        }
    }

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

使用 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"]);
            }
        }            
    }