public static ServerNicInfo[] GetVMBusNetworkAdapterList(ManagementScope scope) { Dictionary <string, ServerNicInfo> dictionary = new Dictionary <string, ServerNicInfo>((IEqualityComparer <string>)StringComparer.CurrentCultureIgnoreCase); Dictionary <string, string> idsToPnpDeviceId = WMIUtils.GetVMBUSDeviceIdsToPNPDeviceId(scope); ObjectQuery query = new ObjectQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled = TRUE"); using (ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher(scope, query)) { using (ManagementObjectCollection objectCollection = managementObjectSearcher.Get()) { foreach (ManagementObject managementObject in objectCollection) { string empty = string.Empty; object obj = managementObject["Index"]; idsToPnpDeviceId.TryGetValue(obj.ToString(), out empty); if (!string.IsNullOrEmpty(empty)) { ServerNicInfo serverNicInfo = new ServerNicInfo(); serverNicInfo.Index = (int)(uint)obj; serverNicInfo.PNPInstanceId = empty; serverNicInfo.TcpIpServiceUuid = (string)managementObject["SettingID"]; if (!dictionary.ContainsKey(serverNicInfo.TcpIpServiceUuid)) { serverNicInfo.DNSDomain = (string)managementObject.Properties["DNSDomain"].Value; serverNicInfo.IPAddresses = (string[])managementObject["IPAddress"]; serverNicInfo.IPMasks = (string[])managementObject["IPSubnet"]; serverNicInfo.IPGateways = managementObject["DefaultIPGateway"] != null ? (string[])managementObject["DefaultIPGateway"] : (string[])null; serverNicInfo.DNSAddrs = managementObject["DNSServerSearchOrder"] != null ? (string[])managementObject["DNSServerSearchOrder"] : (string[])null; serverNicInfo.DHCPEnabled = (bool)managementObject["DHCPEnabled"]; ManagementObject firstElement = WMIUtils.GetFirstElement(managementObject.GetRelated("Win32_NetworkAdapter")); serverNicInfo.FriendlyName = (string)firstElement["NetConnectionID"]; dictionary.Add(serverNicInfo.TcpIpServiceUuid, serverNicInfo); } } } } } return(CUtils.CollectionToArray <ServerNicInfo>((ICollection <ServerNicInfo>)dictionary.Values)); }