다음을 통해 공유


WMI 작업: WMI 서비스에 연결

로컬 컴퓨터 또는 원격 컴퓨터에서 WMI의 데이터를 얻으려면 특정 네임스페이스에 연결하여 WMI 서비스에 연결해야 합니다. 대부분의 경우 약식 모니커 연결 또는 로케이터 연결을 사용합니다. 다른 예제는 https://www.microsoft.com/technet에서 TechNet ScriptCenter를 참조하세요.

원격 연결에는 Windows 방화벽 및 DCOM에 대한 적절한 설정이 필요합니다. 자세한 내용은 원격 컴퓨터에서 WMI에 연결Windows 방화벽을 통해 연결을 참조하세요. Windows Vista부터 UAC(사용자 계정 컨트롤)가 WMI 액세스에 영향을 줄 수 있습니다. 자세한 내용은 사용자 계정 컨트롤 및 WMI를 참조하세요.

이 항목에 표시된 스크립트 예제는 로컬 컴퓨터에서만 데이터를 가져옵니다. 스크립트를 사용하여 원격 컴퓨터에서 데이터를 가져오는 방법에 대한 자세한 내용은 원격 컴퓨터에서 WMI에 연결을 참조하세요.

다음 절차에서 스크립트를 실행하는 방법을 설명합니다.

스크립트를 실행하려면

  1. 코드를 복사하고 확장명이 .vbs인 파일(예: filename.vbs)에 저장합니다. 텍스트 편집기가 파일에 .txt 확장명을 추가하지 않는지 확인합니다.
  2. 명령 프롬프트 창을 열고 파일을 저장한 디렉터리로 이동합니다.
  3. 명령 프롬프트에 cscript filename.vbs를 입력합니다.
  4. 이벤트 로그에 액세스할 수 없는 경우 관리자 권한 명령 프롬프트에서 실행 중인지 확인합니다. 보안 이벤트 로그와 같은 일부 이벤트 로그는 UAC(사용자 액세스 제어)로 보호될 수 있습니다.

참고

기본적으로 cscript는 명령 프롬프트 창에 스크립트의 출력을 표시합니다. WMI 스크립트는 많은 양의 출력을 생성할 수 있으므로 출력을 파일로 리디렉션할 수 있습니다. 명령 프롬프트에서 cscript filename.vbs > outfile.txt를 입력하여 filename.vbs 스크립트의 출력을 outfile.txt로 리디렉션합니다.

다음 표에는 로컬 컴퓨터에서 다양한 형식의 데이터를 가져오는 데 사용할 수 있는 스크립트 예제가 나와 있습니다.

어떻게 할까요? WMI 클래스 또는 메서드
WMI를 사용하여 원격 컴퓨터에 연결할 수 있나요? 모니커 연결 문자열의 일부로 다음 중 하나를 지정합니다.
  • NetBIOS 컴퓨터 이름(예: "atl-dc-01")
  • 정규화된 도메인 이름(예: "atl-dc-01.fabrikam.com")
  • IPv4 주소(예: "192.168.1.1")
  • Windows Vista부터 대상 컴퓨터와 연결을 만드는 컴퓨터가 모두 IPv6을 실행하는 경우 IPv6 주소를 지정할 수 있습니다.
자세한 내용은 원격 컴퓨터에서 WMI에 연결WMI의IPv6 및 IPv4 지원을 참조하세요.
VB
strComputer = "atl-dc-01"
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery ("Select * from Win32_Process")
For Each objProcess in colProcessList
    Wscript.Echo "Process Name: " & objProcess.Name 
Next
PowerShell
strComputer = "atl-dc-01"
Get-WmiObject -Class Win32_Process -ComputerName $strComputer -Namespace "root\cimv2" | format-list -Property Name
대체 자격 증명으로 WMI 스크립트를 실행할 수 있나요?

SWbemLocator.ConnectServer 메서드 또는 C++의 IWbemLocator::ConnectServer를 사용하고 적절한 사용자 이름과 비밀번호를 포함합니다. 로컬 컴퓨터에 연결할 때는 자격 증명을 변경할 수 없습니다. 자세한 내용은 WMI 스크립트 만들기원격 컴퓨터에서 WMI에 연결을 참조하세요.

VB
strComputer = "atl-dc-01"
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer (strComputer, "root\cimv2", "fabrikam\administrator", "password")
Set colProcessList = objSWbemServices.ExecQuery("Select * From Win32_Process")
For Each objProcess in colProcessList
    Wscript.Echo "Process Name: " & objProcess.Name 
Next
PowerShell
$StrComputer = "atl-dc-01"
$strCredentials = "FABRIKAM\administrator"
Get-WmiObject -Class Win32_Process -ComputerName $strComputer -Namespace "root\cimv2" -credential $strCredentials `
   -Impersonation Impersonate | format-list -Property Name

스크립트 및 애플리케이션에 대한 WMI 작업

WMI C++ 애플리케이션 예제

TechNet ScriptCenter

`