본문 바로가기
운영체제 (LNX,WIN)

WMI 원격 접속 방법

by 날으는물고기 2010. 2. 26.

WMI 원격 접속 방법

오늘은 WMI 를 원격에서 사용하는 방법에 대해 알아보겠다.

WMI는 로컬컴퓨터에서도 가능하지만 원격에 있는 컴퓨터의 정보를 가져오는 것도 가능하다.

이 의미는 자신의 컴퓨터에서 몇대의 컴퓨터의 상태를 script작성을 통해 알 수 있다는 것을 의미한다.

예시 1을 보자
해당 Script는 해당 컴퓨터에 올라가 있는 Service를 확인하기 위한 Script이다.
strComputer가 평상시엔 .(즉 자신의 컴퓨터) 였으나 지금은 IP가 들어가 있는 것을 알 수 있다.
strComputer의 값에는 IP or Hostname이 가능하다.

원격에 접속하는 부분은 이 부분을 확인하면 된다.
Set objWMIService = objSWbemLocator.ConnectServer(strComputer, _
    "root\CIMV2", _
    strUser, _
    strPassword, _
    "MS_409", _
    "ntlmdomain:" + strDomain)

즉 원격서버정보, 유저ID, Password, 서버 Domain을 입력하면 된다.
그러면 root\CIMV2와 MS_409의 의미는 무엇일까?
 root\CIMV2\ms_409
안에는 다양한 WMI의 Class가 등록되어 있다.

http://www.webtropy.com/articles/wmi-namespace.asp?wmi=root-CIMV2-ms_409

해당 링크를 확인하면 해당 Class의 정보를 확인 할 수 있다.
이것을 통해 WMI의 Class를 지정해 줌으로써 더 빠르게 Class들의 정보를 확인할 수 있게 한것을
알 수 있다.

원격 접속은 하나의 Component를 사용하는 개념으로 보면된다.
간단한 예로 Visual Basic의 Ado를 사용하기 위해 해당 Component를 추가한 후
접속 함수와 접속 변수의 값을 설정해 주면 접속이 되는 것과 같은 이치라고 할 수 있겠다.

[예시1] 원격서버(127.0.0.1은 loopback이므로 Local Computer)에 접속하여 현재 실행중인 서비스 확인
strComputer = "127.0.0.1"
strDomain = "Workgroup"
strUser = "유저이름"
strPassword = "유저패스워드"

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objSWbemLocator.ConnectServer(strComputer, _
    "root\CIMV2", _
    strUser, _
    strPassword, _
    "MS_409", _
    "ntlmdomain:" + strDomain)

Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_Service",,48)
For Each objItem in colItems 
    Wscript.Echo "Caption: " & objItem.Caption
Next


출처 : http://rockball.tistory.com
728x90

댓글