항목
about_WMI_cmdlets
간단한 설명
WMI(Windows Management Instrumentation) 및 Windows PowerShell에 대한 배경
정보를 제공합니다.
자세한 설명
이 항목에서는 WMI 기술, Windows PowerShell용 WMI cmdlet, WMI 기반 원격,
WMI 액셀러레이터 및 WMI 문제 해결에 대해 설명합니다. 또한 WMI에 대한 자세한
내용을 볼 수 있는 링크도 제공합니다.
WMI 정보
WMI(Windows Management Instrumentation)는 엔터프라이즈 환경에서 관리
정보에 액세스하기 위한 표준 기술을 개발하는 업계 이니셔티브인 WBEM(Web-Based
Enterprise Management)의 Microsoft 구현입니다. WMI는 CIM(Common Information
Model) 산업 표준을 사용하여 시스템, 응용 프로그램, 네트워크, 장치 및 기타
관리되는 구성 요소를 나타냅니다. CIM은 DMTF(Distributed Management Task Force)에서
개발하고 유지 관리합니다. WMI를 사용하여 로컬 컴퓨터와 원격 컴퓨터를 모두 관리할
수 있습니다. 예를 들어 WMI를 사용하여 다음을 수행할 수 있습니다.
-- 원격 컴퓨터에서 프로세스를 시작합니다.
-- 컴퓨터를 원격으로 다시 시작합니다.
-- 로컬 컴퓨터나 원격 컴퓨터에 설치된 응용 프로그램의 목록을 가져옵니다.
-- 로컬 컴퓨터나 원격 컴퓨터의 Windows 이벤트 로그를 쿼리합니다.
Windows PowerShell용 WMI Cmdlet
Windows PowerShell은 기본적으로 Windows PowerShell에서 사용할 수 있는 cmdlet
집합을 통해 WMI 기능을 구현합니다. 이러한 cmdlet을 사용하여 로컬 컴퓨터와
원격 컴퓨터를 관리하는 데 필요한 종단 간 작업을 완료할 수 있습니다.
다음과 같은 WMI cmdlet이 포함되어 있습니다.
Cmdlet 설명
------------------ ----------------------------------------------
Get-WmiObject WMI 클래스의 인스턴스 또는 사용 가능한 클래스에
대한 정보를 가져옵니다.
Invoke-WmiMethod WMI 메서드를 호출합니다.
Register-WmiEvent WMI 이벤트에 가입합니다.
Remove-WmiObject WMI 클래스 및 인스턴스를 삭제합니다.
Set-WmiInstance WMI 클래스의 인스턴스를 만들거나 수정합니다.
샘플 명령
다음 명령은 로컬 컴퓨터에 대한 BIOS 정보를 표시합니다.
C:\PS> get-wmiobject win32_bios | format-list *
다음 명령은 세 원격 컴퓨터의 WinRM 서비스에 대한 정보를 표시합니다.
C:\PS> get-wmiobject -query "select * from win32_service where name='WinRM'" -computername server01, server01, server03
다음의 더 복잡한 명령은 프로그램의 모든 인스턴스를 종료합니다.
C:\PS> notepad.exe
C:\PS> $np = get-wmiobject -query "select * from win32_process where name='notepad.exe'"
C:\PS> $np | remove-wmiobject
WMI 기반 원격
WMI를 통해 로컬 시스템을 관리하는 기능이 유용하긴 하지만 WMI를 강력한 관리
도구라고 할 수 있는 것은 원격 기능 때문입니다. WMI는 Microsoft의 DCOM(Distributed
Component Object Model)을 사용하여 시스템에 연결하고 시스템을 관리합니다.
DCOM 연결을 허용하기 위해 일부 시스템을 구성해야 할 수 있습니다.
방화벽 설정과 잠긴 DCOM 사용 권한은 WMI의 시스템 원격 관리 기능을 차단할
수 있습니다.
WMI 유형 액셀러레이터
Windows PowerShell에는 WMI 유형 액셀러레이터가 포함되어 있습니다. 이러한
WMI 유형 액셀러레이터(바로 가기)를 사용하면 유형 액셀러레이터 이외의 방법이
허용하는 것보다 직접적으로 WMI 개체에 액세스할 수 있습니다.
다음과 같은 유형 액셀러레이터가 WMI에서 지원됩니다.
[WMISEARCHER] - WMI 개체를 검색하기 위한 바로 가기입니다.
[WMICLASS] - 클래스의 정적 속성 및 메서드에 액세스하기 위한 바로 가기입
니다.
[WMI] - 클래스의 단일 인스턴스를 가져오기 위한 바로 가기입니다.
[WMISEARCHER]는 ManagementObjectSearcher의 유형 액셀러레이터입니다. 이 유형
액셀러레이터는 문자열 생성자를 사용하여 검색기를 만들 수 있으며 사용자는
이 검색기에서 GET()을 수행할 수 있습니다.
예를 들면 다음과 같습니다.
PS> $s = [WmiSearcher]'Select * from Win32_Process where Handlecount > 1000'
PS> $s.Get() |sort handlecount |ft handlecount,__path,name -auto
handlecount __PATH name
----------- ------ ----
1105 \\SERVER01\root\cimv2:Win32_Process.Handle="3724" powershell...
1132 \\SERVER01\root\cimv2:Win32_Process.Handle="1388" winlogon.exe
1495 \\SERVER01\root\cimv2:Win32_Process.Handle="2852" iexplore.exe
1699 \\SERVER01\root\cimv2:Win32_Process.Handle="1204" OUTLOOK.EXE
1719 \\SERVER01\root\cimv2:Win32_Process.Handle="1912" iexplore.exe
2579 \\SERVER01\root\cimv2:Win32_Process.Handle="1768" svchost.exe
[WMICLASS]는 ManagementClass의 유형 액셀러레이터입니다. 이 유형 액셀러레이
터에는 WMI 클래스의 로컬 또는 절대 WMI 경로를 사용하고 이 클래스에 바인
딩된 개체를 반환하는 문자열 생성자가 있습니다.
예를 들면 다음과 같습니다.
PS> $c = [WMICLASS]"root\cimv2:WIn32_Process"
PS> $c |fl *
Name : Win32_Process
__GENUS : 1
__CLASS : Win32_Process
__SUPERCLASS : CIM_Process
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_Process
__PROPERTY_COUNT : 45
__DERIVATION : {CIM_Process, CIM_LogicalElement, CIM_ManagedSystemElement}
__SERVER : SERVER01
__NAMESPACE : ROOT\cimv2
__PATH : \\SERVER01\ROOT\cimv2:Win32_Process
[WMI]는 ManagementObject의 유형 액셀러레이터입니다. 이 유형 액셀러레이터에는
WMI 인스턴스의 로컬 또는 절대 WMI 경로를 사용하고 이 인스턴스에 바인딩된
개체를 반환하는 문자열 생성자가 있습니다.
예를 들면 다음과 같습니다.
PS> $p = [WMI]'\\SERVER01\root\cimv2:Win32_Process.Handle="1204"'
PS> $p.Name
OUTLOOK.EXE
WMI 문제 해결
다음 문제는 원격 컴퓨터에 연결하려고 할 때 발생할 수 있는 가장 일반적인
문제입니다.
문제 1: 원격 컴퓨터가 온라인 상태가 아닙니다.
컴퓨터가 오프라인 상태인 경우 WMI를 사용하여 컴퓨터에 연결하지 못할 수 있습니다.
다음과 같은 오류 메시지가 나타날 수 있습니다.
"원격 서버 컴퓨터가 없거나 사용할 수 없습니다."
이 오류 메시지가 나타나는 경우 컴퓨터가 온라인 상태인지 확인합니다.
원격 컴퓨터에 Ping을 수행합니다.
문제 2: 원격 컴퓨터에서 로컬 관리자 권한이 없습니다.
원격으로 WMI를 사용하려면 원격 컴퓨터에서 로컬 관리자 권한이 있어야 합니다.
로컬 관리자 권한이 없으면 원격 컴퓨터에 대한 액세스가 거부됩니다.
네임스페이스 보안을 확인하려면:
a. 시작을 클릭하고 내 컴퓨터를 마우스 오른쪽 단추로 클릭한 다음 관리를 클릭
합니다.
b. 컴퓨터 관리에서 서비스 및 응용 프로그램을 확장하고 WMI 컨트롤을 마우스
오른쪽 단추로 클릭한 다음 속성을 클릭합니다.
c. WMI 컨트롤 속성 대화 상자에서 보안 탭을 클릭합니다.
문제 3: 방화벽이 원격 컴퓨터에 대한 액세스를 차단합니다.
WMI는 DCOM(Distributed COM) 및 RPC(원격 프로시저 호출) 프로토콜을 사용하여
네트워크를 통과합니다. 기본적으로 많은 방화벽이 DCOM 및 RPC 트래픽을 차단합니다.
방화벽이 이러한 프로토콜을 차단하는 경우 연결이 실패합니다. 예를들어 Microsoft
Windows XP 서비스 팩 2의 Windows 방화벽은 DCOM 및 WMI를 비롯한 모든 원하지
않는 네트워크 트래픽을 자동으로 차단하도록 구성 되어 있습니다. 기본 구성에서
Windows 방화벽은 들어오는 WMI 요청을 거부하고 다음과 같은 오류 메시지가
나타납니다.
"원격 서버 컴퓨터가 없거나 사용할 수 없습니다."
WMI에 대한 자세한 내용
WMI에 대한 자세한 내용은 MSDN(Microsoft Developer Network) 라이브러리의
다음 항목을 참조하십시오.
"About WMI(WMI 정보)"
https://go.microsoft.com/fwlink/?LinkId=142212
"WMI Troubleshooting(WMI 문제 해결)"
https://go.microsoft.com/fwlink/?LinkId=142213
Microsoft TechNet 스크립트 센터의 "Secrets of Windows Management
Instrumentation - Troubleshooting and Tips(Windows Management
Instrumentation - 문제 해결 및 정보)"를 참조하십시오.
https://go.microsoft.com/fwlink/?LinkId=142214
참고 항목
온라인 버전: https://go.microsoft.com/fwlink/?LinkId=142219
Get-WmiObject
Invoke-WmiMethod
Register-WmiEvent
Remove-WmiObject
Set-WmiInstance