可以实现通过网页控制hyer-v虚拟机,查看虚拟机的信息、实现关闭和启动指定的虚拟机
ObjectQuery queryObj = new ObjectQuery("SELECT * FROM Msvm_ComputerSystem WHERE NOT Description LIKE '%Host%'");
ManagementScope scope = GetVMScope();
ManagementObjectSearcher vmSearcher = new ManagementObjectSearcher(scope, queryObj);
List<ManagementObject> vmCollection = vmSearcher.Get().Cast<ManagementObject>().OrderBy(vm => vm["ElementName"]).ToList();
vms = new List<VmModel>();
foreach (ManagementObject vm in vmCollection)
{
ManagementObject settings = vm.GetRelated("Msvm_VirtualSystemSettingData").Cast<ManagementObject>().ToList().FirstOrDefault();
if (settings == null) continue;
ManagementObject memorySettings = settings.GetRelated("Msvm_MemorySettingData").Cast<ManagementObject>().ToList().FirstOrDefault();
ManagementObject ethernet = settings.GetRelated("Msvm_SyntheticEthernetPortSettingData").Cast<ManagementObject>().ToList().FirstOrDefault();
ManagementObject information = vm.GetRelated("Msvm_SummaryInformation").Cast<ManagementObject>().ToList().FirstOrDefault();
if (ethernet == null)
{
ethernet = settings.GetRelated("Msvm_EmulatedEthernetPortSettingData").Cast<ManagementObject>().ToList().FirstOrDefault();
}
var md = new VmModel
{
Name = vm["ElementName"].ToString(),
Description = vm["Description"].ToString(),
MemoryTotal = (UInt64)memorySettings["VirtualQuantity"],
};
vms.Add(md);
}
vmdata.DataSource= vms;