블로그에 접근 하는 중
Preparing valuable information. Just invest two seconds!
 

윈도우에서 WMI를 활용하는 방법: 시스템 자동화의 핵심 도구

728x90

윈도우에서 WMI를 활용하는 방법: 시스템 자동화의 핵심 도구

Windows Management Instrumentation(WMI)는 윈도우 시스템 관리의 숨은 보석입니다. 시스템 내부 정보를 불러오거나 제어할 수 있는 강력한 인터페이스로, 일반 사용자부터 보안 전문가, 시스템 관리자, 자동화 엔지니어까지 폭넓게 사용됩니다. 이 글에서는 WMI의 개념부터, 실제 명령어 예시, 윈도우 창 감지, 원격 데스크톱 상태 확인 등 실용적인 활용법까지 정리해보겠습니다.

 

 

WMI란 무엇인가?

WMI(Windows Management Instrumentation)는 마이크로소프트가 개발한 시스템 관리용 프레임워크로, Windows 운영체제에서 하드웨어 상태, 운영체제 정보, 네트워크 구성, 프로세스/서비스 제어 등 다양한 정보를 API를 통해 제공하는 기술입니다. 즉, 스크립트나 프로그램으로 윈도우 내부 상태를 읽고 조작할 수 있는 창구입니다.

 

 

WMI를 활용하면 할 수 있는 일들

활용 목적 설명
CPU 정보 조회 프로세서 모델명, 속도 등 확인
운영체제 상태 확인 버전, 설치일자, 부팅 시간 등
윈도우 창 감지 특정 프로그램이 실행되었는지 여부 확인
서비스 제어 서비스 시작/중지 여부 확인 및 제어
디스크 용량 조회 드라이브별 용량 및 사용량 확인
프로세스 관리 실행 중인 프로세스 목록 확인 및 종료
네트워크 구성 보기 IP 주소, 게이트웨이, DNS 등 확인
원격 데스크톱 접속자 확인 RDP 세션 정보 및 원격 로그인 여부 확인

 

 

PowerShell에서의 WMI 명령어 예시

# 운영체제 정보
Get-WmiObject -Class Win32_OperatingSystem

# CPU 정보
Get-WmiObject -Class Win32_Processor

# 디스크 정보
Get-WmiObject -Class Win32_LogicalDisk

# 네트워크 어댑터 설정
Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object {$_.IPEnabled -eq $true}

# 실행 중인 프로세스 목록
Get-WmiObject -Class Win32_Process

 

윈도우 창 감지: 실행 중인 창 확인하기

WMI는 윈도우 창 자체에 대한 직접적인 이벤트 후킹은 어렵지만, 특정 프로세스가 실행 중인지 확인함으로써 창 유무를 추론할 수 있습니다.

# 예: notepad.exe가 실행 중인지 확인
Get-WmiObject -Query "SELECT * FROM Win32_Process WHERE Name='notepad.exe'"

 

Python 예시 코드:

import wmi

c = wmi.WMI()
for process in c.Win32_Process(name="notepad.exe"):
    print(f"Notepad is running, PID: {process.ProcessId}")

 

WMI로 원격 데스크톱 접속자(RDP 세션) 확인하기

WMI를 이용해 현재 시스템에 원격으로 접속한 사용자(RDP 세션)을 조회할 수 있습니다. 다음은 PowerShell을 이용한 예시입니다.

# 원격 세션(RDP) 사용자 확인
query user

 

WMI를 활용한 세부 접근은 다음과 같습니다:

# WMI로 RDP 세션 확인 (간접 접근)
Get-WmiObject -Class Win32_LogonSession | 
  Where-Object { $_.LogonType -eq 10 } | 
  ForEach-Object {
    $user = (Get-WmiObject -Class Win32_LoggedOnUser | Where-Object { $_.Dependent -match $_.LogonId }).Antecedent
    $user
  }

 

LogonType 10은 원격 대기 중인 세션(RDP)을 의미합니다.

 

WMI를 실생활에 적용하는 방법

1. 자동화 스크립트 제작

  • 컴퓨터가 켜질 때 자동으로 서비스 상태 확인
  • 일정 디스크 용량 이하일 경우 알림 보내기

2. 보안 및 모니터링

  • 실행 중인 프로세스 감시 및 의심스러운 프로세스 자동 종료
  • 원격 세션 여부 확인 및 로그인 추적

3. 자산 관리

  • 기업 환경에서 사용자 PC의 하드웨어 정보 자동 수집
  • 운영체제 버전 및 패치 상태 확인

 

WMI의 기능은 무궁무진

 

WMI는 겉으로 보기에 다소 생소하고 복잡하게 느껴질 수 있지만, 그 기능은 무궁무진합니다. 특히 PowerShell, Python 등과 연동하면 윈도우 내부를 손에 잡히듯 다룰 수 있게 됩니다. 시스템을 정밀하게 모니터링하고 자동화하고자 한다면, 지금부터라도 WMI의 세계에 발을 들여보는 건 어떨까요?

 

728x90