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