private static void SetDriveInfo(HardwareInfo result) { result.Drives = new List <DriveInfo>(); var drives = new ManagementObjectSearcher("select * from Win32_DiskDrive") .Get() .Cast <ManagementObject>() .ToList(); if (drives?.Any() != true) { return; } foreach (var managementObject in drives) { var drive = new DriveInfo { Name = managementObject.GetValue <string>("Caption"), Size = managementObject.GetValue <ulong>("Size") }; result.Drives.Add(drive); } }
public static ManagementObject NewResource(this ManagementObject VM, ResourceTypes ResType, string SubType, ManagementScope Scope) { var pool = new ManagementObjectSearcher(Scope, new SelectQuery(VMStrings.ResourcePool, "ResourceType = " + (ushort)ResType + " and ResourceSubType = '" + SubType + "'")) .Get().Cast <ManagementObject>().ToArray(); return(!pool.Any() ? null : new ManagementObject(pool.SelectMany( item => item.GetRelated("MSVM_AllocationCapabilities") .Cast <ManagementObject>() .SelectMany( cap => cap.GetRelationships("MSVM_SettingsDefineCapabilities") .Cast <ManagementObject>() .Where(defCap => uint.Parse(defCap["ValueRole"].ToString()) == 0))).First()["PartComponent"].ToString())); /* * if (!pool.Any()) * return null; * var var1 = pool.SelectMany(item => item.GetRelated("MSVM_AllocationCapabilities").Cast<ManagementObject>()); * var var2 = var1.SelectMany(cap =>cap.GetRelationships("MSVM_SettingsDefineCapabilities").Cast<ManagementObject>()); * var var3 = var2.Where(defCap => uint.Parse(defCap["ValueRole"].ToString()) == 0); * var var4 = var3.First(); * return var4; */ /* * var AllocQuery = new SelectQuery("MSVM_AllocationCapabilities", * "ResourceType = " + (ushort)ResType +" and ResourceSubType = '" + SubType + "'"); * var AllocResult = new ManagementObjectSearcher(Scope, AllocQuery).Get().Cast<ManagementObject>().FirstOrDefault(); * var objQuery = new SelectQuery("MSVM_SettingsDefineCapabilities", * "ValueRange = 0"); * var objOut = new ManagementObjectSearcher(Scope, objQuery).Get().Cast<ManagementObject>(); * objOut = objOut.Where(each => { * return each == null ? false * : each["GroupComponent"] == null ? false * : each["GroupComponent"].ToString().Equals(AllocResult["__Path"].ToString()); * }); * var Out = objOut.First(); * var MC = GetObject(Out["PartComponent"].ToString()); * * return MC; * /* * var MgmtSvc = GetServiceObject(Scope, ServiceNames.VSManagement); * ManagementBaseObject inputs = MgmtSvc.GetMethodParameters("AddVirtualSystemResources"); * inputs["TargetSystem"] = VM.Path.Path; * inputs["ResourceSettingData"] = new []{MC.GetText(TextFormat.WmiDtd20)}; * * var result = MgmtSvc.InvokeMethod("AddVirtualSystemResources", inputs, null); * * switch (Int32.Parse(result["ReturnValue"].ToString())) * { * case (int)ReturnCodes.OK: * var tmp = result["NewResources"]; * return GetObject(((ManagementObject[])result["NewResources"]).First()["__Path"].ToString()); * case (int)ReturnCodes.JobStarted: * var job = GetObject(result["Job"].ToString()); * var r = WaitForJob(job); * if (r == 0) * { * var res = result["NewResources"]; * var arr = (ManagementBaseObject[])res; * var fir = arr.First(); * var path = fir["__Path"].ToString(); * var o = GetObject(path); * return GetObject(((ManagementObject[])result["NewResources"]).First()["__Path"].ToString()); * } * return null; * default: * return null; * } */ }