none
PowerShell에서 하드웨어 정보 RRS feed

답변

  • 안녕하십니까? 김도남 님

    Microsoft TechNet Forum 사이트를 방문해 주셔서 감사합니다.

     

    문의 하신 “PowerShell에서 하드웨어 정보에 대한 답변을 드리겠습니다.

     

    PowerShell에서 WMI 인스턴스를 이용해서 하드웨어 정보를 제공을 할 수 있습니다.

     

    Step 1 : BIOS

     

    현재 머신에서win32_bios WMI 인스턴스를 이용해서 상태, 버전, BIOS, 제조업자 , 출시 날짜, 시리얼 넘버 정보를 제공을 합니다.

     

    Get-WmiObject win32_bios -ComputerName . | select Status,Version,PrimaryBIOS,Manufacturer,ReleaseDate,SerialNumber

     

    MSDN을 참조해서 코드값에 대응되는 설명 문자열로 변환하는 Script를 작성을 할 수 있습니다. 아래와 같이 Code에 대한 설명을 미리 작성한 Script를 이용해서 사용자에게 더 많은 정보를 제공할 수 있습니다.

     

    function get-WmiBiosCharacteristics

     {

     param

      ([uint16] $char)

        If ($char -le 39)

         {

          switch ($char)

           {

                0   {"00-Reserved"}

                1   {"01-Reserved"}

                2   {"02-Unknown"}

                3   {"03-BIOS Characteristics Not Supported"}

                4   {"04-ISA is supported"}

                5   {"05-MCA is supported"}

                 …(생략)

    }

    }

           Return

           }

            If ($char -ge 40 -and $char -le 45)

             {

                "{0}-Reserved for BIOS vendor" -f $char

                return           

             }

            

            If ($char -ge 48 -and $char -le 63)

             {

                "{0}-Reserved for system vendor" -f $char

                return

             }

                     

        "{0}-Unknown Value " -f $char            

    }        

     

     

    $bios = Get-wmiObject Win32_bios

     

     

    foreach ($ch in $bios.BiosCharacteristics)

    {

        "                      :  {0}" -f  (Get-WmiBiosCharacteristics($ch))

    }

     

    "Bios Version          :  {0}" -f $bios.BiosVersion

    "Codeset               :  {0}" -f $bios.Codeset

    "CurrentLanguage       :  {0}" -f $bios.CurrentLanguage

    "Description           :  {0}" -f $bios.Description

    "IdentificatonCode     :  {0}" -f $bios.IdentificatonCode

    "InstallableLanguages  :  {0}" -f $bios.InstallableLanguages

    …(생략)

     

    Step 2 : Disk

     

     

    아래의 Cmdlet Win32_DiskDrive WMI Instance를 이용해서 Storage Device의 정보를 제공을 합니다.

     

    Get-WmiObject win32_DiskDrive -ComputerName . | Select Model,SerialNumber,Description,MediaType,FirmwareRevision

     

    Script

     

    아래의 Script ConfigManagerErrorCode에 대응하는 MSDN의 설명을 사용자에게 설명을 제공을 합니다.

     

    function get-ConfigManagerErrorCodeCharacteristics

    {

        param

        (

            [uint16] $char

        )

     

        If ($char -le 39)

        {

            switch ($char)

            {

                0   {"00-Device is working properly"}

                1   {"01-Device is not configured correctly"}

                2   {"02-Windows cannot load the driver for this device"}

                3   {"03-Driver for this device might be corrupted, or the system may be low on memory or other resources"}

                4   {"04-Device is not working properly. One of its drivers or the registry might be corrupted"}

                5   {"05-Driver for the device requires a resource that Windows cannot manage"}

                     }       

            Return

        }

        

    "{0}-Unknown Value " -f $char           

    }        

     

     

    Get-WMIObject Win32_DiskDrive | %{ Add-Member -InputObject $_ ScriptProperty -Name ManagerError -Value {

        get-ConfigManagerErrorCodeCharacteristics $_.ConfigManagerErrorCode

            } -passthru

            } | Select-Object Model, ConfigManagerErrorCode, ManagerError

     

     

    참고 자료

     

    Win32_BIOS class

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa394077(v=vs.85).aspx

    Win32_DiskDrive class
    http://msdn.microsoft.com/en-us/library/windows/desktop/aa394132(v=vs.85).aspx

    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    • 답변으로 표시됨 김도남 2011년 11월 22일 화요일 오전 7:48
    2011년 11월 21일 월요일 오전 9:27
    중재자