[C#] 장치관리자 목록 추출하기

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Management;

using System.Management.Instrumentation;


/**

 * //KBW : https://powershell.one/wmi/root/cimv2/win32_pnpentity

 *  {

        1          {'Other'}

        2        {'Unknown'}

        3          {'Running/Full Power'}

        4          {'Warning'}

        5          {'In Test'}

        6          {'Not Applicable'}

        7          {'Power Off'}

        8          {'Off Line'}

        9          {'Off Duty'}

        10         {'Degraded'}

        11         {'Not Installed'}

        12         {'Install Error'}

        13         {'Power Save - Unknown'}

        14         {'Power Save - Low Power Mode'}

        15         {'Power Save - Standby'}

        16         {'Power Cycle'}

        17         {'Power Save - Warning'}

        18         {'Paused'}

        19         {'Not Ready'}

        20         {'Not Configured'}

        21         {'Quiesced'}

      }

 * 

 **/



namespace DeviceStatus

{

    class Program

    {

        static void Main(string[] args)

        {

            String result = "OK";

            // Query the device list trough the WMI. If you want to get

            // all the properties listen in the MSDN article mentioned

            // below, use "select * from Win32_PnPEntity" instead!

            ManagementObjectSearcher deviceList =

                //new ManagementObjectSearcher("Select Name, Status from Win32_PnPEntity");

                //new ManagementObjectSearcher("Select * from Win32_PnPEntity where Availability = 12 or Availability = 11");

                new ManagementObjectSearcher("Select * from Win32_PnPEntity where Availability = 2");


            // Any results? There should be!

            if (deviceList != null)

                // Enumerate the devices

                foreach (ManagementObject device in deviceList.Get())

                {

                    // To make the example more simple,

                    object n = device.GetPropertyValue("Name");

                    string name = "NoName".ToString();

                    if (n != null) name = n.ToString();

                    string status = device.GetPropertyValue("Status").ToString();


                    // Uncomment these lines and use the "select * query" if you 

                    // want a VERY verbose list

                    // foreach (PropertyData prop in device.Properties)

                    //    Console.WriteLine( "\t" + prop.Name + ": " + prop.Value);


                    // More details on the valid properties:

                    // http://msdn.microsoft.com/en-us/library/aa394353(VS.85).aspx

                    


                    // Part II, Evaluate the device status.

                    bool working = ((status == "OK") || (status == "Degraded")

                        || (status == "Pred Fail"));


                    if (working == true)

                    {

                        Console.WriteLine("Device name: {0}", name);

                        Console.WriteLine("\tStatus: {0}", status);

                        Console.WriteLine("\tWorking?: {0}", working);

                    }

                    else if (name == "NoName")

                    {

                        Console.WriteLine("Device name: {0}", name);

                        Console.WriteLine("\tStatus: {0}", status);

                        Console.WriteLine("\tWorking?: {0}", working);

                    }


                    result = "ERROR";

                }


            //Console.WriteLine("Press any key...");

            //Console.ReadKey();

            Console.WriteLine("{0}",result);

        }

    }

}


0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기
captcha
자동등록방지 숫자입력

기타

번호 제목 글쓴이 날짜 조회수
73 [시간] 시간과 관련한 정보가 필요하면 최고관리자 09-18 1,459
72 [Docker compose] Can not find a suitable configuration 에러 원인 최고관리자 09-15 1,483
71 [Docker] CentOS 7 에 Docker를 설치해 보자. 최고관리자 09-14 2,161
70 [소스 컴파일] 컴파일관련 용어를 살펴보자. 최고관리자 09-13 1,610
69 [PHP] 언어 최고관리자 08-18 989
68 [관심] 개발을 오래한 사람이면 공감되는 내용이 많을 것입니다. 최고관리자 08-18 806
67 [VS] code-server를 통해 어디에서든 PC환경으로 개발하자 최고관리자 08-18 775
66 [Mac] Capture Screen Image 폴더 지정 하기 최고관리자 08-02 839
65 [IntelliJ] 여러파일의 이름을 한번에 바꾸는 Plugin 최고관리자 07-29 1,636
64 [모니터] 용도/크기/화질 천차만별! 나한테 맞는 모니터 고르는 법! 최고관리자 07-23 786
63 윈도우 hosts 파일 수정 최고관리자 05-09 977
62 [HTML] image map을 활용한 영역클릭 최고관리자 04-27 879
61 [Linux] CentOS 7에서의 gcc upgrade 최고관리자 08-28 2,773
60 [Linux] wkhtmltopdf error가 해결되지 않을 경우 확인 최고관리자 08-27 1,567
59 [Linux] CentOS7에서 HTML to PDF 실행시 Error 최고관리자 08-27 2,332
58 [Linux] Html to PDF 설치하기 최고관리자 08-27 1,645
57 [Linus] RPM 패키지 관리를 위한 DNF 명령 최고관리자 08-27 1,234
56 [Intellij] 노란줄 Found duplicated code in 해결방법 최고관리자 08-26 1,459
55 [Linux] CentOS sendmail 설치 및 테스트 최고관리자 08-18 3,038
54 [Linux] Console에서 메일보내기 테스트시 EOF(EOT)입력은 어떻게?? 최고관리자 08-18 1,451