C# Посчитать кол-во не подключенных и проблемных устройств

Снимок http://joxi.net/n2YLoRjHZxYe5m.jpg

На фотографии видна часть, но я все таки скопирую код сюда :

ManagementObjectSearcher Devices =
new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PnPEntity");
foreach (ManagementObject mo in Devices.Get())
{
ConnectedDiveces += "\r\n" + "---------------------------------------------------------" + "\r\n" + 
"Name: " + mo["Caption"] + "\r\n" + "ID: " + mo["DeviceID"] + "\r\n" + "Manufacturer: " + 
mo["Manufacturer"] + "\r\n" + "Plug and Play: " + mo["Present"] + "\r\n" + "Status: " + mo["Status"];
}

Так я достаю всю информацию о подключенных девайсах на материнской плате. То ли мозги вскипели, не знаю, не могу сделать.

  1. Мне нужно посчитать кол-во всех подключенных устройств в цифрах.
  2. Нужно найти те устройства, у которых Status != OK и Present = FALSE и выдать отдельно только их. И + к этому отдельно посчитать и выдать их кол-во ( то есть кол-во проблемных устройств )

Спасибо вам заранее большое за помощь!


Ответы (1 шт):

Автор решения: Kunoichi

Возможно этот код Вам поможет

        ManagementObjectSearcher Devices = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PnPEntity");
        var allDevices = new List<string>();
        var defectiveDevices= new List<string>();
        foreach (ManagementObject device in Devices.Get())
        {
            var deviceString = "\r\n" + "---------------------------------------------------------" + "\r\n" +
            "Name: " + device["Caption"] + "\r\n" + "ID: " + device["DeviceID"] + "\r\n" + "Manufacturer: " +
            device["Manufacturer"] + "\r\n" + "Plug and Play: " + device["Present"] + "\r\n" + "Status: " + device["Status"];
            allDevices.Add(deviceString);

            if(device["Status"] != "OK" && device["Present"] == "FALSE")
            {
                defectiveDevices.Add(deviceString);
            }
        }
        Console.WriteLine($"Total devices: {allDevices.Count}");
        Console.WriteLine($"Total defective devices: {defectiveDevices.Count}");
        Console.WriteLine();
        foreach(var defectiveDevice in defectiveDevices)
        {
            Console.WriteLine(new string('-', 50));
            Console.WriteLine(defectiveDevice);
        }
→ Ссылка