항목 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