다음을 통해 공유


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

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

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

컴퓨터 이름 또는 IP 주소를 지정하여 ComputerName 매개 변수를 사용하여 원격 컴퓨터에서 동일한 정보를 검색할 수 있습니다.

Get-CimClass -Namespace root/CIMV2 -ComputerName 192.168.1.29

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

비고

CIM cmdlet을 사용하여 원격 컴퓨터에 연결하는 경우 원격 컴퓨터에서 WMI를 실행해야 하며 사용 중인 계정은 원격 컴퓨터의 로컬 관리자 그룹에 있어야 합니다. 원격 시스템에 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