Exemplo n.º 1
0
 /// <summary>
 /// Returns a list of VM ManagementObjects which have the specified VHD attached.
 /// </summary>
 /// <param name="VHD"></param>
 /// <param name="Server"></param>
 /// <returns></returns>
 public static IEnumerable<ManagementObject> LocateVHD(string VHD, string Server = null)
 {
     ManagementScope scope = GetScope(Server);
     var VHDs = new ManagementObjectSearcher(scope,
                     new SelectQuery(VMStrings.ResAllocData,
                                     "ResourceSubType like '" +
                                     ResourceSubTypes.VHD + "'")).Get().Cast<ManagementObject>();
     VHDs = VHDs.Where(obj =>
                           {
                               string HD = ((string[]) obj["Connection"])[0];
                               return HD.Equals(VHD, StringComparison.InvariantCultureIgnoreCase);
                           });
     List<ManagementObject> VMs = new List<ManagementObject>();
     foreach (var vhd in VHDs)
     {
         string id = ((string) vhd["InstanceID"]).Split('\\')[0].Split(':').Last();
         VMs.AddRange(GetVM(scope, VMID: id));
     }
     return VMs;
 }