[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
자동등록방지 숫자입력

기타

번호 제목 글쓴이 날짜 조회수
33 [docker] Docker Compose 커맨드 사용법 최고관리자 01-14 1,204
32 [docke] 도커 컴포즈 설치 및 사용 최고관리자 01-14 1,189
31 [docker] CentOS7 docker로 설치하기. 최고관리자 01-14 1,090
30 [docker] Docker 를 사용한 가상 호스트 (Virtual Host) 구축 및 서브 도메인 연결 최고관리자 01-13 3,555
29 [docker] 네트워크 이해하기. 최고관리자 01-13 1,157
28 [C++] 장치관리자 정보 최고관리자 12-28 2,323
27 [C#] 장치관리자 목록 추출하기 최고관리자 12-17 2,550
26 [모니터링] 그라파이트와 그라파나로 메트릭스 모니터링 시스템 구축하기 최고관리자 12-02 1,882
25 [docker] 도커 컴포즈를 활용하여 완벽한 개발 환경 구성하기 최고관리자 12-02 1,237
24 [docker] MariaDB + 로컬에 데이터저장소 연결 최고관리자 12-02 1,209
23 [docker] mysql 설치 및 활용 최고관리자 12-02 11,822
22 [네트워크] KT HomeHub SSH접속 설정 최고관리자 11-30 1,163
21 [Linux] 리눅스 포트 명령어 최고관리자 11-30 2,911
20 [Ubuntu] Google Chrome 웹브라우저에서 크롬원격접속 설정오류 고치기 최고관리자 11-24 3,290
19 [Ubuntu] deb, rpm 파일 설치하기 최고관리자 11-24 1,927
18 [Ubuntu] ifconfig가 안될 때 최고관리자 11-24 1,619
17 [Ubuntu] 영문버젼에 한글입력기 설치 최고관리자 11-24 2,233
16 [Ubuntu] Remote Desktop 최고관리자 11-24 1,219
15 [Ubuntu] NVDIA Graphic Driver Install 최고관리자 11-24 1,218
14 [SSL 인증서] 종류와 가격 최고관리자 11-24 1,164