Share via


Get-CimInstance를 사용하여 WMI 개체 가져오기

이 샘플은 Windows 플랫폼에만 적용됩니다.

WMI(Windows Management Instrumentation)는 다양한 정보를 균일한 방식으로 노출하므로 Windows 시스템 관리의 핵심 기술입니다. WMI가 가능한 양 때문에 WMI 개체 Get-CimInstance에 액세스하기 위한 PowerShell cmdlet은 실제 작업을 수행하는 데 가장 유용한 방법 중 하나입니다. 이 장에서는 CIM cmdlets를 사용하여 WMI 개체에 액세스하는 방법과 WMI 개체를 사용하여 특정 작업을 수행하는 방법을 차례로 설명합니다.

WMI 클래스 표시

대부분의 WMI 사용자가 직면하는 첫 번째 문제는 WMI를 사용하여 수행할 수 있는 작업을 검색하려고 할 때 발생합니다. WMI 클래스는 관리할 수 있는 리소스를 설명합니다. 수백 개의 WMI 클래스가 있으며 그 중 일부는 수십 개의 속성을 포함합니다.

Get-CimClass 는 WMI를 검색할 수 있도록 하여 이 문제를 해결합니다. 다음을 입력하여 로컬 컴퓨터에서 사용할 수 있는 WMI 클래스 목록을 가져올 수 있습니다.

Get-CimClass -Namespace root/CIMV2 | 
    Where-Object CimClassName -like Win32* | 
    Select-Object CimClassName
CimClassName
------------
Win32_DeviceChangeEvent
Win32_SystemConfigurationChangeEvent
Win32_VolumeChangeEvent
Win32_SystemTrace
Win32_ProcessTrace
Win32_ProcessStartTrace
Win32_ProcessStopTrace
Win32_ThreadTrace
Win32_ThreadStartTrace
Win32_ThreadStopTrace
...

다음과 같이 ComputerName 매개 변수를 사용하여 컴퓨터 이름과 IP 주소를 지정하면 원격 컴퓨터에서도 이 정보를 검색할 수 있습니다.

Get-CimClass -Namespace root/CIMV2 -ComputerName 192.168.1.29

원격 컴퓨터에서 반환된 클래스 목록은 컴퓨터가 실행 중인 특정 운영 체제에 따라 달라질 수 있으며 설치된 애플리케이션에서 특정 WMI 확장을 추가합니다.

참고 항목

CIM cmdlet을 사용하여 원격 컴퓨터에 연결하는 경우 원격 컴퓨터에서 WMI를 실행해야 하며 사용 중인 계정은 원격 컴퓨터의 로컬 관리istrators 그룹에 있어야 합니다. 원격 시스템에는 PowerShell을 설치하지 않아도 됩니다. 이 경우 관리자는 PowerShell을 실행 중이지 않지만 WMI를 사용할 수 있는 운영 체제를 관리할 수 있습니다.

WMI 클래스 세부 정보 표시

WMI 클래스의 이름을 이미 알고 있는 경우 이 클래스를 사용하여 즉시 정보를 가져올 수 있습니다. 예를 들어 컴퓨터에 대한 정보를 검색하는 데 일반적으로 사용되는 WMI 클래스 중 하나는 Win32_OperatingSystem.

Get-CimInstance -Class Win32_OperatingSystem
SystemDirectory     Organization BuildNumber RegisteredUser SerialNumber            Version
---------------     ------------ ----------- -------------- ------------            -------
C:\WINDOWS\system32 Microsoft    22621       USER1          00330-80000-00000-AA175 10.0.22621

이 명령에는 매개 변수가 모두 나와 있지만 불필요한 매개 변수를 표시하지 않을 수 있습니다. 로컬 시스템에 연결할 때는 ComputerName 매개 변수가 필요하지 않습니다. 가장 일반적인 사례를 보여 주며 매개 변수에 대해 알려 줍니다. 네임스페이 스는 기본적으로 root/CIMV2/>이며 생략할 수도 있습니다. 마지막으로 대부분의 cmdlet을 사용하면 공통 매개 변수의 이름을 생략할 수 있습니다. Get-CimInstance를 사용할 때 첫 번째 매개 변수의 이름을 지정하지 않으면 PowerShell은 이 매개 변수를 Class 매개 변수로 처리합니다. 즉, 다음과 같이 입력하여 위 명령을 실행할 수도 있습니다.

Get-CimInstance Win32_OperatingSystem

Win32_OperatingSystem 클래스에는 여기에 표시된 속성보다 더 많은 속성이 있습니다. Get-Member를 사용하면 이러한 속성을 모두 볼 수 있습니다. 다음과 같이 WMI 클래스의 속성도 다른 개체 속성처럼 자동으로 사용할 수 있습니다.

Get-CimInstance -Class Win32_OperatingSystem | Get-Member -MemberType Property
   TypeName: Microsoft.Management.Infrastructure.CimInstance#root/cimv2/Win32_OperatingSystem
Name                                      MemberType Definition
----                                      ---------- ----------
BootDevice                                Property   string BootDevice {get;}
BuildNumber                               Property   string BuildNumber {get;}
BuildType                                 Property   string BuildType {get;}
Caption                                   Property   string Caption {get;}
CodeSet                                   Property   string CodeSet {get;}
CountryCode                               Property   string CountryCode {get;}
CreationClassName                         Property   string CreationClassName {get;}
CSCreationClassName                       Property   string CSCreationClassName {get;}
CSDVersion                                Property   string CSDVersion {get;}
CSName                                    Property   string CSName {get;}
CurrentTimeZone                           Property   int16 CurrentTimeZone {get;}
DataExecutionPrevention_32BitApplications Property   bool DataExecutionPrevention_32BitApplications {get;}
DataExecutionPrevention_Available         Property   bool DataExecutionPrevention_Available {get;}
...

Format cmdlet을 사용하여 기본 속성이 아닌 속성 표시

기본적으로 표시되지 않는 Win32_OperatingSystem 클래스에 정보를 포함하려면 Format cmdlet을 사용하여 표시할 수 있습니다. 예를 들어 사용 가능한 메모리 데이터를 보려면 다음과 같이 입력합니다.

Get-CimInstance -Class Win32_OperatingSystem | Format-Table -Property TotalVirtualMemorySize, TotalVisibleMemorySize, FreePhysicalMemory, FreeVirtualMemory, FreeSpaceInPagingFiles
TotalVirtualMemorySize TotalVisibleMemorySize FreePhysicalMemory FreeVirtualMemory FreeSpaceInPagingFiles
---------------------- ---------------------- ------------------ ----------------- ----------------------
              41787920               16622096            9537952          33071884               25056628

참고 항목

Format-Table의 속성 이름에 와일드카드를 사용할 수 있으므로 최종 파이프라인 요소를 Format-Table -Property Total*Memory*, Free*로 줄일 수 있습니다.

다음을 입력하여 목록으로 서식을 지정하는 경우 메모리 데이터를 더 읽기 쉽게 만들 수 있습니다.

Get-CimInstance -Class Win32_OperatingSystem | Format-List Total*Memory*, Free*
TotalVirtualMemorySize : 41787920
TotalVisibleMemorySize : 16622096
FreePhysicalMemory     : 9365296
FreeSpaceInPagingFiles : 25042952
FreeVirtualMemory      : 33013484
Name                   : Microsoft Windows 11 Pro|C:\Windows|\Device\Harddisk0\Partition2