WMI(Windows Management Instrumentation)는 마이크로소프트가 Windows 컴퓨팅 환경에서 네트워크 내 장치와 애플리케이션의 관리를 통합하기 위해 제공하는 표준 사양 집합입니다. WMI를 활용하면 로컬 또는 원격 컴퓨터 시스템의 상태 정보를 손쉽게 확인할 수 있습니다.
WMI의 목적은 관리자가 원격 시스템을 포함한 다양한 Windows 운영 환경을 효율적으로 관리하도록 돕는 것입니다. 특히 엔터프라이즈 네트워크 구성 요소의 유지 보수 비용과 관리 부담을 크게 줄여준다는 점이 가장 큰 장점으로 꼽힙니다.
WMI는 마이크로소프트의 최신 운영 체제에 기본 탑재되어 있습니다. Windows 10 이전 버전에서는 WMI 전용 명령줄 인터페이스(CLI)인 WMIC(WMI Command Line)가 제공되었으며, WMIC는 기존 셸과 유틸리티 명령과도 호환됩니다.
WBEM의 구현체로서의 WMI
WMI는 지원되는 Windows 플랫폼을 위한 WBEM(Web-Based Enterprise Management, 웹 기반 엔터프라이즈 관리) 이니셔티브의 마이크로소프트 구현체입니다. WBEM은 엔터프라이즈 IT 환경에서 다양한 하드웨어·소프트웨어 관리 시스템의 정보에 접근하고 이를 통합하기 위한 관리 인프라 표준을 개발하는 업계 전반의 이니셔티브입니다.
WBEM은 CIM(Common Information Model, 공통 정보 모델) 스키마를 기반으로 합니다. CIM은 장치와 애플리케이션의 특성을 정의하는 컴퓨터 산업 표준으로, 시스템 관리자와 관리 프로그램이 여러 제조사의 장치와 애플리케이션을 일관되게 제어할 수 있도록 해줍니다. CIM은 DMTF(구 Distributed Management Task Force)가 주도하고 있습니다.
WMI 심층 분석
WMI는 엔터프라이즈 네트워크에서 Windows의 운영, 구성, 상태에 대한 일관된 모델을 제공합니다. 로컬 또는 원격 시스템의 관리 정보에 접근할 수 있는 COM API를 제공하며, 원격 WMI 연결은 DCOM(Distributed Component Object Model)을 통해 이루어집니다.
WMI 도구 키트는 Windows 드라이버 모델의 다양한 확장 기능을 제공하며, 이 모델은 핵심 정보와 각종 알림을 위한 운영 체제 인터페이스 역할을 합니다.
개발자와 IT 관리자는 WMI 스크립트나 애플리케이션을 작성해 원격 컴퓨터의 관리 작업을 자동화할 수 있습니다. 별도의 SDK(소프트웨어 개발 키트)를 다운로드하거나 설치할 필요가 없으며, 다양한 프로그래밍 언어로 WMI를 통해 작업을 수행하거나 데이터를 조회할 수 있습니다.
또한 WMI는 스크립트 지원 외에도 SCOM(Microsoft System Center Operations Manager), WinRM(Windows Remote Management) 등 운영 체제의 다른 구성 요소와 제품에 관리 데이터를 공급합니다.
WMI가 지원하는 대표적인 작업은 다음과 같습니다.
- 보안 설정 구성
- 시스템 속성 설정 및 변경
- 권한 있는 사용자 및 사용자 그룹의 권한 설정과 변경
- 드라이브 레이블 할당 및 변경
- 특정 시간에 프로세스가 실행되도록 예약
- 개체 리포지토리 백업
- 오류 로깅 활성화 또는 비활성화
WMI 아키텍처
WMI는 균일한 인터페이스를 제공하므로 WMI 클라이언트 애플리케이션과 스크립트가 여러 시스템 API를 호출할 필요가 없습니다. 또한 유연하고 확장 가능한 아키텍처 덕분에 새로운 장치, 애플리케이션 및 기타 기능 확장도 손쉽게 지원됩니다.
WMI 아키텍처의 세 가지 핵심 요소는 다음과 같습니다.
1. 관리 인프라(Management Infrastructure)
- CIMOM(CIM Object Manager): 애플리케이션이 관리 데이터에 균일하게 접근할 수 있도록 지원
- CIMOM 개체 리포지토리: 관리 데이터를 저장하는 중앙 저장소
2. WMI 공급자(WMI Providers)
- CIMOM과 관리 대상 개체 사이의 중개자 역할
- 주요 기능:
- WMI API를 통해 관리 대상 개체의 데이터를 CIMOM에 공급
- 관리 애플리케이션을 대신해 요청 처리
- 이벤트 알림 생성
3. WMI 소비자(WMI Consumers)
- WMI 인프라와 상호 작용하는 관리 애플리케이션 또는 스크립트
- 데이터 쿼리 및 열거
- 공급자 메서드 실행
- 이벤트 구독

PowerShell에서 CIM 통합을 위해 사용할 수 있는 cmdlet의 예시입니다.
WMI의 주요 구성 요소
- 관리 대상 개체(Managed Objects): 하드 디스크 드라이브, 네트워크 어댑터, 운영 체제 등 WMI를 통해 관리되는 물리적 구성 요소나 서비스
- WMI 공급자(WMI Provider): WMI를 위해 하나 이상의 관리 대상 개체를 모니터링하는 COM(Component Object Model) 개체
- WMI 인프라(WMI Infrastructure): WMI 코어와 WMI 리포지토리로 구성된 Windows 운영 체제 구성 요소
- WMI 리포지토리(WMI Repository): CIMOM이 관리하고 WMI 네임스페이스별로 정리된 중앙 저장소로, WMI 공급자가 정의한 클래스 같은 개체의 정적 데이터를 저장
- WMI 서비스(WMI Service): 관리 애플리케이션(공급자)과 WMI 리포지토리 사이의 중개자 역할
- WMI 소비자(WMI Consumers): WMI용 COM API 또는 스크립팅 API를 호출해 쿼리를 전송하는 관리 애플리케이션 또는 스크립트
관리자는 WMI를 어떻게 활용할까?
관리자는 모든 Windows 기반 애플리케이션에서 WMI를 사용할 수 있으며, 특히 엔터프라이즈 애플리케이션과 관리 스크립트에서 그 효과가 두드러집니다. WMI의 대표적인 활용 사례는 다음과 같습니다.
- 원격 컴퓨터 관리
- 애플리케이션 간 관리 정보 공유
- 모든 소스의 관리 데이터에 균일한 방식으로 접근
- Windows 기반 시스템 및 네트워크 모니터링
- UEBA(사용자 엔터티 행동 분석) 시스템의 일부로서 엔터프라이즈 네트워크 전반의 활동 모니터링
- 비정상 이벤트와 의심스러운 행위 감지, 내부자 위협 점검
WMI 쿼리 실행 방법
WMI 쿼리를 실행하는 가장 간단한 방법은 표준 Windows 명령 프롬프트에서 WMIC를 실행하는 것입니다.
- 명령 프롬프트를 엽니다.
- WMIC를 입력하고 Enter 키를 눌러 프로그램을 실행합니다.
- WMIC 명령 프롬프트가 열리면 다양한 WMI 쿼리를 실행해 필요한 정보를 출력으로 받습니다.
- 결과는 명령 프롬프트 화면에 표시됩니다.

PowerShell은 WMI와 연동되어 관리자가 PowerShell 스크립팅 언어로 WMI 데이터를 활용할 수 있도록 지원합니다.
WMI 서비스 시작 및 중지
winmgmt.exe 서비스를 통해 WMI는 로컬 컴퓨터에서 실행됩니다. WMI는 시스템 시작 시 자동으로 구동되거나, 최초의 관리·모니터링 애플리케이션 또는 스크립트가 WMI 네임스페이스에 연결을 시도할 때 자동으로 시작됩니다.
WMI 서비스를 시작하는 방법:
- 명령 프롬프트로 이동합니다.
- net start winmgmt[</switch>] 명령을 입력합니다.
- WMI 서비스에 따라 일부 서비스는 자동으로 시작되지 않을 수 있습니다.
WMI 서비스를 중지하는 방법:
- 명령 프롬프트로 이동합니다.
- net stop winmgmt 명령을 입력합니다.
참고: WMI 서비스를 중지하면 해당 서비스에 종속된 모든 서비스도 함께 중지됩니다.
Windows Management Infrastructure(MI)
현재 세대의 WMI는 MI(Windows Management Infrastructure)라고 불립니다. MI API에는 개발자가 네이티브 WMI 공급자와 클라이언트를 만들 때 필요한 인터페이스, 열거형, 구조체, 공용 구조체가 포함되어 있습니다. 마이크로소프트에 따르면 WMI는 이전 버전과 완전히 호환되므로, MI 프레임워크로 작성된 최신 버전도 기존의 WMI 스크립트와 애플리케이션으로 접근할 수 있습니다.