본문 바로가기
DevOps/Powershell

WMI (Windows Management Instrumentation)와 DSC (Desired State Configuration)

by Rainbound-IT 2025. 6. 5.
반응형

 

이전 포스팅에서 wmf 를 설치하면 여러가지가 구성이 되는데 이중 wmi 와 dsc에 대해 잘 몰라서 찾아 보았습니다.

 

🧠 1. WMI (Windows Management Instrumentation)

🔹 개요

WMI는 Windows 운영체제의 시스템 정보를 쿼리하거나 제어할 수 있는 표준 인터페이스입니다. 하드웨어, 서비스, 운영체제 구성, 사용자 정보 등 다양한 정보를 제공하며, PowerShell, VBScript, C# 등 여러 언어에서 사용 가능합니다.

🔹 주요 특징

항목 설명
표준 인터페이스 CIM(Common Information Model)을 기반으로 한 관리 인터페이스
쿼리 언어 WQL(WMI Query Language) 사용 – SQL과 유사한 문법
원격 관리 지원 원격 시스템의 정보도 쿼리 가능 (-ComputerName 옵션 등)
대상 서비스, 디스크, 사용자, 네트워크, 프로세스, 이벤트 로그 등
 

🔹 PowerShell 예시

# 현재 시스템의 운영체제 정보 조회
Get-WmiObject -Class Win32_OperatingSystem

# 원격 시스템의 CPU 정보
Get-WmiObject -Class Win32_Processor -ComputerName "server01"

🔹 언제 쓰나?

  • 자산 관리 (CPU, RAM, 디스크 정보 수집)
  • 서비스 상태 점검 및 제어
  • 사용자/그룹/네트워크 구성 파악
  • 이벤트 로그 분석 등

 

 

🧠 2. DSC (Desired State Configuration)

🔹 개요

DSC는 PowerShell을 기반으로 하는 구성 관리(Configuration Management) 도구입니다. 시스템이 어떤 상태(설정, 서비스, 파일 등)를 유지해야 하는지 정의하고, 그 상태를 자동으로 유지/복구하도록 만듭니다.

🔹 핵심 개념

 

요소 설명
Configuration 원하는 상태를 기술한 PowerShell 스크립트
Resource 설정할 대상 (예: WindowsFeature, File, Service 등)
Local Configuration Manager (LCM) 시스템에서 DSC를 적용·모니터링하는 에이전트
 

🔹 기본 흐름

  1. DSC Configuration 스크립트 작성
  2. .mof 파일로 컴파일
  3. 해당 구성을 대상 시스템에 적용
  4. 시스템은 지정된 상태를 계속 유지 (자동 복구 포함)

🔹 간단한 예제

Configuration EnableTelnet {
    Node "localhost" {
        WindowsFeature TelnetClient {
            Name = "Telnet-Client"
            Ensure = "Present"
        }
    }
}

EnableTelnet
Start-DscConfiguration -Path ./EnableTelnet -Wait -Verbose

📌 위 스크립트는 "Telnet Client" 기능이 설치된 상태를 항상 유지하도록 설정합니다.


⚖️ WMI vs DSC 비교 요약

항목WMIDSC
역할 시스템 정보 조회 및 제어 시스템 상태를 정의하고 유지
기술 방식 쿼리 기반 (WQL, .NET) 선언적 구성 방식
주 사용 목적 상태 확인, 모니터링, 간단한 제어 구성 자동화, 상태 유지, 정책 적용
실행 형태 명령 기반 스크립트+모니터 기반
자동 복구 ❌ 없음 ✅ 상태가 벗어나면 자동 복구 가능
 

🧩 정리하면:

  • WMI: Windows 시스템의 "현재 상태"를 조회하고 제어하는 API 인터페이스입니다.
  • DSC: Windows 시스템이 "이런 상태여야 한다"는 정책을 설정하고 유지하는 자동화 도구입니다.

둘 다 PowerShell과 긴밀히 통합되어 있으며, 시스템 관리 자동화에 핵심 역할을 합니다.

반응형

'DevOps > Powershell' 카테고리의 다른 글

WMF(Windows Management Framework) 란?  (0) 2025.06.05

댓글