> ## Content Index
> Fetch the complete content index at: https://suitmyself.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# WMI Query Language by Example
- URL: https://suitmyself.com/wmi-query-language-by-example-2/
- Published: 2023-05-12T04:52:35.000Z
- Updated: 2026-09-16T03:23:49.000Z
- Author: Benjamin Kim
- Tags: Secure, Programming, #Import 2026-09-15 05:58

이 글은 아래주소의 내용은 구글 번역기를 이용해 한글로 번역해둔자료입니다.  
자세한 내용은 아래페이지를 참고하는걸로.

[https://www.codeproject.com/articles/46390/wmi-query-language-by-example](https://www.codeproject.com/articles/46390/wmi-query-language-by-example?ref=suitmyself.com)

쿼리 유형을 3개의 그룹으로 분류하여 예제를 가지고 설명을 하고 있는 문서로 구글번역기 수준으로도 매우 쉽게 이해할 수 있는 자료입니다.

Object Queries  
Event Queries  
Schema Queries  
Object Queries  
Object queries are used to get information about system resources.  
(개체 쿼리는 시스템 리소스에 대한 정보를 가져 오는 데 사용됩니다.)

Object Queries Exam:

```css
    Select * From Win32_Process  

```

Windows 프로세스를 나타내는 Win32\_Process라는 WMI 클래스의 모든 인스턴스를 가져옵니다.

Object Queries Exam:

```css
    Select * From Win32_Process Where ProcessId = 608

```

( Where PropertyName Operator PropertyValue )

Object Queries Exam:

```css
    Select * From Win32_Service Where Name Like "%SQL%" 

```

(Like 연산자의 사용이 가능합니다.)

Object Queries Exam:

```css
	Select * From Win32_Service Where Name &gt; "M" And Name &lt; "O" 

```

일반적인 문자열 비교 규칙적용

Object Queries Exam:

```css
	Select * From Win32_Service Where ExitCode = "1077" 

```

Win32\_Process.ExitCode 속성 형식은 UInt32이지만 따옴표로 묶습니다. WMI는 문자열 값을 해석하고 적절한 형식으로 변환하기 위해 최선을 다할 것입니다. 다른 방법으로는 작동하지 않습니다. 문자열 속성을 사용하면 따옴표를 사용해야합니다.

```css
    Select * From Cim_DataFile Where Drive = "C:" And Path = "\\Scripts\\" 

```

Cim\_DataFile은 반드시 WHERE 절을 반드시 사용해야하는 WMI 클래스입니다. '선택 \* Cim\_DataFile에서'혼자 컴퓨터에있는 모든 파일을 반환하기 때문에 완료하는 데 몇 시간이 걸릴 수 있습니다. Drive 속성에는 파일 이름이나 Drive 속성에 저장되어있는 드라이브 문자가 포함되어 있지 않습니다.

Object Queries Exam:

```css
    Associators Of {Win32_NetworkAdapter.DeviceId=1}

```

보시다시피 Select 쿼리 만 WQL의 쿼리 유형이 아닙니다.  
Select 쿼리와 마찬가지로 Associators쿼리는 WMI 개체 또는 클래스 정의를 반환 할 수 있습니다.  
그러나 차이점은 다음과 같습니다.  
Select 쿼리는 항상 한 WMI 클래스 인스턴스의 컬렉션을 반환하거나 특정 수준에서 동일한 상위 클래스를 가진 클래스 인스턴스를 반환합니다.  
한편, 쿼리의 연결자는 일반적으로 다른 WMI 클래스에 속한 WMI 개체의 컬렉션을 반환합니다.  
반환 된 개체의 공통점 중 하나는 Associators Of 쿼리 (중괄호로 묶인)에 지정된 WMI 개체와 모두 관련되어 있다는 것입니다.  
개체의 주요 속성을 사용하여 경로를 지정하고 속성 이름, 등호 및 속성 값 사이에 공백이 없어야합니다.  
내 컴퓨터에서 위의 쿼리는 다음 클래스의 인스턴스를 반환합니다.

Object Queries Return instance:

```css
		Win32_ComputerSystem
		Win32_DeviceMemoryAddress
		Win32_IRQResource
		Win32_NetworkAdapterConfiguration
		Win32_NetworkProtocol
		Win32_PnPEntity
		Win32_PortResource
		Win32_SystemDriver

```

Object Queries Exam:

```css
     Associators Of {Win32_NetworkAdapter.DeviceId=1}
     Where ResultClass = Win32_NetworkAdapterConfiguration 

```

대부분의 경우 WMI 개체와 관련된 모든 WMI 개체가 필요하지는 않습니다.  
Associators Of Query Where 절에서 반환 된 개체의 클래스를 지정하여 반환 된 컬렉션의 범위를 좁힐 수 있습니다.  
위의 쿼리는 원본 개체와 연결된 Win32\_NetworkAdapterConfiguration의 인스턴스를 반환합니다.

Object Queries Exam:

```css
	Associators Of {Win32_NetworkAdapter.DeviceId=1}
        Where AssocClass = Win32_NetworkAdapterSetting 

```

WMI 클래스는 연관 클래스라고하는 특수한 유형의 WMI 클래스로 연결됩니다. Win32\_NetworkAdapter 및 Win32\_NetworkAdapterConfiguration 개체는 Win32\_NetworkAdapterSetting이라는 연결 클래스의 인스턴스와 연결됩니다. 보시다시피 관련 클래스 이름을 사용하여 반환 된 객체 컬렉션을 제한 할 수도 있습니다.

Object Queries Exam:

```css
	References Of {Win32_NetworkAdapter.DeviceId=1} 

```

References Of 쿼리를 사용하여 WMI 개체 연결을 검사 할 수 있습니다. 쿼리의 Associators와 달리 쿼리의 References는 WMI 연결 클래스 만 반환합니다. 이 쿼리는 다음 WMI 연결 클래스의 인스턴스를 반환합니다.

Object Queries Return instance:

```css
		Win32_AllocatedResource
		Win32_NetworkAdapterSetting
		Win32_PnPDevice
		Win32_ProtocolBinding
		Win32_SystemDevices

```

Event Queries  
Event queries are used for WMI event subscriptions.  
(이벤트 쿼리는 WMI 이벤트 구독에 사용됩니다.)

Event Queries Exam:

```css
    Select * From __InstanceCreationEvent
	Within 5
	Where TargetInstance Isa "Win32_Process"

```

WMI 이벤트 쿼리는 WMI 개체를 즉시 반환하지 않는다는 점에서 다른 쿼리 유형과 다릅니다.  
대신 WMI 이벤트를 구독하는 데 사용되며 이벤트가 도착하면 개체가 반환됩니다.  
Within 쿼리 유형과 \_\_InstanceCreationEvent 클래스의 다른 쿼리 유형에는없는 두 가지 고유 한 이벤트 쿼리의 특성에 유의하십시오.  
Within 절은 몇 초 안에 이벤트를 폴링하는 빈도를 WMI에 알려줍니다. 위의 쿼리에서 폴링 간격은 5 초입니다.  
WQL 이벤트 모니터링은 시스템 리소스를 소비하므로 시간에 이벤트를 가져올 필요와 시스템에 부담을 줄 필요가없는 사이의 균형을 맞추는 것이 중요합니다.  
\_\_InstanceCreationEvent 클래스는 이벤트 쿼리에서만 사용되는 클래스 중 하나입니다 (다른 두 가지 일반적으로 사용되는 클래스는 \_\_InstanceModificationEvent 및 \_\_InstanceDeletionEvent입니다).  
이 클래스의 인스턴스는 요청 된 이벤트가 도착하면 만들어집니다. \_\_InstanceCreationEvent.TargetInstance 속성은 실제로 이벤트를 트리거 한 WMI 클래스에 대한 참조를 보유합니다.  
위의 쿼리에서는 Win32\_Process 클래스이며 TargetInstance 속성을 사용하여 해당 속성에 액세스 할 수 있습니다.

Event Queries Exam:

```css
	Select * From __InstanceCreationEvent
	Within 5
	Where TargetInstance Isa "Win32_Process"
	And TargetInstance.Name = "Notepad.exe"

```

이 쿼리는 프로세스 만들기 이벤트를 모니터링하지만 'Notepad.exe'라는 프로세스 만 모니터링합니다.

Event Queries Exam:

```css
	Select * From __InstanceDeletionEvent
	Within 5
	Where TargetInstance Isa "Win32_Process"
	And TargetInstance.Name = "Notepad.exe" 

```

이 쿼리를 사용하여 Name 속성이 'Notepad.exe'인 프로세스의 프로세스 삭제 이벤트를 모니터링합니다. 프로세스 삭제 이벤트는 프로세스가 종료 될 때 발생합니다. 다음과 같은 쿼리에 대해 메모해야 할 사항이 하나 있습니다. 메모장을 열고 빠르게 닫으면 (5 초 이내에) WMI에서이를 놓치고 이벤트로보고하지 않을 수 있습니다.

Event Queries Exam:

```css
	Select * From __InstanceOperationEvent
	Within 5
	Where TargetInstance Isa "Win32_Process"
	And TargetInstance.Name = "Notepad.exe"

```

이 쿼리는 생성, 삭제 및 수정 이벤트의 세 가지 유형의 이벤트를 모두 모니터링합니다. \_\_InstanceOperationEvent 클래스는 \_\_InstanceCreation, \_\_InstanceDeletion 및 \_\_InstanceModification 클래스의 부모이며이 사실을 사용하여 세 가지 이벤트 유형을 모두 동시에 구독 할 수 있습니다. \_\_InstanceOperationEvent 클래스는 인스턴스가없는 추상 클래스이므로 이벤트에 의해 반환 된 실제 이벤트 클래스는 트리 인스턴스 클래스 중 하나이며 \_\_Class 시스템 속성을 검사하여 어떤 인스턴스가 있는지 확인할 수 있습니다. 이렇게하면 이벤트 유형을 결정할 수 있습니다.

Schema Queries  
Schema queries are used to get information about WMI itself and its structure.(스키마 쿼리는 WMI 자체 및 구조에 대한 정보를 가져 오는 데 사용됩니다.)

Schema Queries Exam:

```css
	 Select * From Meta_Class 

```

가장 기본적인 스키마 쿼리입니다. 모든 WMI 네임 스페이스에 연결하여 이 쿼리를 사용하여 해당 클래스에 있는 모든 클래스를 가져올 수 있습니다. Meta\_Class는 스키마 쿼리에서만 사용되는 메타 클래스입니다.

Schema Queries Exam:

```css
	Select * From Meta_Class Where __Class = "Win32_LogicalDisk"  

```

이 쿼리는 \_\_Class 시스템 속성을 사용하여 Win32\_LogicalDisk 클래스를 가져옵니다. 스키마 쿼리는 클래스 인스턴스가 아니라 클래스 정의를 반환하며 이와 같은 쿼리는 인스턴스가 있는지 여부에 관계없이 클래스 정의를 반환합니다. 왜 클래스 정의를 얻고 싶습니까? 새 WMI 클래스는 모든 새 Windows 버전에 추가되며 이와 같은 쿼리는 클래스가 시스템에 있는지 확인할 수 있습니다.

Schema Queries Exam:

```css
	Select * From Meta_Class Where __Superclass Is Null 

```

WMI는 계층 적으로 구성됩니다. 클래스 컨테이너로서 네임 스페이스의 계층 구조가 있으며 각 네임 스페이스 내에 클래스 계층이 있습니다. '루트'라는 최상위 네임 스페이스가 하나만 있지만 네임 스페이스에 항상 최상위 클래스가 두 개 이상 있습니다. 새 빈 네임 스페이스를 만들 때도 자동으로 여러 시스템 WMI 클래스가 만들어집니다. 이 쿼리를 사용하여 네임 스페이스에 대한 모든 최상위 클래스를 가져올 수 있습니다. (이 쿼리는 'Is'대신 '='를 사용하는 경우에도 작동합니다.)

Schema Queries Exam:

```css
    Select * From Meta_Class Where __Superclass = "Win32_CurrentTime" 	

```

각 WMI 클래스에 대해 \_\_Superclass 속성은 바로 위 부모 클래스의 이름을 포함합니다. 이 쿼리를 사용하여 클래스의 모든 직계 하위 클래스를 반환 할 수 있습니다. 클래스 이름을 따옴표로 묶으십시오. \_\_Superclass는 7 가지 WMI 시스템 속성 중 하나 (자세한 내용은 여기 참조)이며 스키마 쿼리에서 사용할 수 있습니다. 하나만 제외하고 - \_\_Dynasty 속성은 문자열 배열이며 WQL 쿼리에서 배열 속성을 사용할 수 없습니다. 위의 쿼리는 Win32\_LocalTime과 Win32\_UTCTime의 두 클래스를 반환하는데, Win32\_CurrentTime의 직접적인 자식입니다.

Schema Queries Exam:

```css
	Select * From Meta_Class Where __Dynasty = "Cim_Setting" 

```

\_\_Dynasty는 또 다른 WMI 시스템 속성입니다. 각 클래스에 대해 클래스가 파생 된 최상위 클래스의 이름을 보유합니다. 이 쿼리는 Root \\ Cimv2 네임 스페이스에있는 최상위 클래스 인 Cim\_Setting의 모든 자식을 반환합니다.

Schema Queries Exam:

```css
	Select * From Meta_Class Where __Class Like "Win32%" 

```

모든 WMI 클래스는 스키마에 속하며 적어도 스키마에 속해야합니다. 예를 들어 이름이 'Cim'으로 시작하는 클래스는 DMTF에서 정의한 '핵심 및 공통'WMI 클래스 그룹 인 Cim 스키마에 속합니다. 'Win32'로 시작하는 클래스는 'Win32'스키마에 속합니다.이 클래스는 Cim 클래스에서 파생되어 확장됩니다. 이 쿼리를 사용하여 'Win32'스키마에 속한 모든 클래스를 나열 할 수 있습니다. 쿼리는 Like 연산자를 사용합니다. 즉, Like 연산자가 XP 용 WQL에 추가 되었기 때문에 Windows XP 이전의 Windows 버전에서는이 연산자를 사용할 수 없습니다.

Schema Queries Exam:

```css
	Select * From Meta_Class Where __This Isa "__Event"

```

이것은 \_\_Event 클래스를 사용한다는 사실에도 불구하고 이벤트 쿼리가 아닙니다. \_\_Event의 모든 하위 클래스 (직접 및 간접 모두)를 나열하는 스키마 쿼리입니다. 스키마 쿼리에 사용되는 특수 WMI 속성 인 '\_\_This'와 'Isa'연산자를 사용합니다.