Share via


WMI 클라이언트 만들기

WMI는 다양한 클라이언트에서 활용할 수 있는 표준화된 시스템 관리 인프라를 제공합니다. 이러한 클라이언트는 wmic.exe 명령줄 도구에서 System Center Operations Manager에 이르기까지 다양합니다. WMI 스크립팅 API, 네이티브 C++ API를 사용하거나 System.Management .NET Framework 클래스 라이브러리 네임스페이스의 형식을 사용하여 고유한 WMI 클라이언트를 작성할 수 있습니다.

WMI 클라이언트를 만드는 방법

WMI의 핵심 기능은 WMI 리포지토리에서 개체를 검색하고 해당 개체의 속성을 검사하는 것으로 구성됩니다. 이러한 속성을 업데이트하거나 해당 속성에 대해 메서드를 호출하도록 선택할 수도 있습니다. 다음 예제에서는 기본 WMI 관리 작업: 로컬 컴퓨터의 이름 검색을 수행하는 방법을 보여 줍니다.

용어 설명
PowerShell을 사용하여 클라이언트 만들기
WMI 및 PowerShell은 긴밀하게 통합되어 있습니다. 따라서 PowerShell을 사용하여 WMI 개체를 검색하려는 경우 Get-WmiObject cmdlet을 호출하기만 하면 됩니다. 일관성을 위해 첫 번째 코드 조각은 많은 기본값을 명시적으로 지정합니다. 두 번째는 기본값이 올바르다고 가정합니다.

PowerShell
#explicitly states many of the default parameters $myComputer = Get-WmiObject -ComputerName "." -Namespace "root\cimv2" -Query "SELECT * FROM Win32_ComputerSystem" foreach ($computer in $myComputer) { "System Name: " + $computer.name } 

#assumes the default values are correct Get-WmiObject Win32_ComputerSystem | Format-Table "Name"

VBScript를 사용하여 클라이언트 만들기

VBScript는 WMI에서 일반적으로 사용되는 원래 스크립팅 언어였습니다. PowerShell이 점점 더 많이 사용되면서 이 설명서의 많은 기존 코드 샘플은 VBScript로 작성되었습니다. 이 특정 VBScript 샘플은 로컬 컴퓨터 경로와 가장 수준을 명시적으로 지정합니다. 이것은 필수는 아니지만 종종 모범 사례로 사용됩니다.

VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objItem in colItems
    Wscript.Echo "Computer Name: " & objItem.Name
Next

C#을 사용하여 클라이언트 만들기(Microsoft.Management.Infrastructure)

이 네임스페이스는 관리 코드로 WMI에 액세스하기 위한 현재 솔루션을 포함하며 Windows MI(Management Infrastructure) 또는 WMIv2라고 합니다. 현재 MI는 관리형 관리 클라이언트를 만들기 위해 지원되는 기술입니다. 자세한 내용은 관리형 MI 클라이언트를 구현하는 방법네이티브 MI 클라이언트를 구현하는 방법을 참조하세요.

C#
using Microsoft.Management.Infrastructure; ... CimSession session = CimSession.Create("localHost"); IEnumerable<CimInstance> queryInstance = session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_ComputerSystem"); 

foreach (CimInstance cimObj in queryInstance) { Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString()); }

C#을 사용하여 클라이언트 만들기(System.Management)

이 네임스페이스에는 관리 코드로 WMI에 액세스하기 위한 원래 솔루션이 포함되어 있습니다. System.Management 클래스는 계속 사용할 수 있지만 Microsoft.Management.Infrastructure 클래스는 일반적으로 더 효율적이고 더 잘 스케일링됩니다. 따라서 원래 WMI 클래스 대신 MI 클래스를 사용하는 것이 좋습니다.

C#
using Microsoft.Management.Infrastructure; ... CimSession session = CimSession.Create("localHost"); IEnumerable<CimInstance> queryInstance = session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_ComputerSystem"); 

foreach (CimInstance cimObj in queryInstance) { Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString()); }

다음 표에는 이 섹션에서 다루는 항목이 나와 있습니다.

항목 설명
원격 컴퓨터에서 WMI에 연결 클라이언트가 원격 컴퓨터에서 WMI 인프라를 사용할 때 발생하는 여러 문제에 대해 설명합니다.
스크립트 및 애플리케이션에 대한 WMI 작업 예제 WMI 클라이언트 코드를 표시합니다.
WMI 애플리케이션 또는 스크립트 만들기 다양한 WMI 클라이언트를 만드는 방법에 대한 정보를 제공합니다.
성능 데이터 모니터링 WMI를 사용하여 성능 데이터를 모니터링하는 방법을 설명합니다.
WMI 이벤트 수신 WMI 이벤트를 보는 방법을 설명합니다.
이벤트 모니터링 WMI 이벤트를 모니터링하는 방법을 설명합니다.
WQL을 사용하여 쿼리 WQL(WMI 쿼리 언어)을 소개합니다.
선택적 기능의 상태 쿼리 Windows 7에서 WMI는 Win32_OptionalFeature 클래스를 구현했습니다. 이 클래스는 컴퓨터에 있는 선택적 기능의 상태를 검색합니다.
WMI 개체의 위치 설명 WMI 관리형 엔터티의 위치를 설명하는 구문에 중점을 둡니다.
WMI를 사용하여 다른 운영 체제 기능에 액세스 디바이스 드라이버, Active Directory 및 SNMP 디바이스에 액세스하는 WMI 클라이언트를 작성하는 방법을 설명합니다.
Interop 네임스페이스의 데이터 액세스 연결 공급자를 사용하면 WMI(Windows Management Instrumentation) 클라이언트가 여러 네임스페이스에서 프로필 및 연결된 클래스 인스턴스를 트래버스하고 검색할 수 있습니다.
클래스 및 인스턴스 정보 조작 WMI 클라이언트가 수행해야 하는 일반적인 작업에 대해 설명합니다.
클래스를 함께 연결 뷰 공급자와 뷰 공급자를 사용하여 여러 WMI 클래스의 정보를 가져오는 방법에 대해 설명합니다.
시스템 레지스트리 수정 WMI 클라이언트가 WMI를 사용하여 시스템 레지스트리 정보를 관리하는 방법을 설명합니다.