2006/09/21

WMI를 이용한 이벤트로그 백업


For Each strComputer in arrComputers
    Set objWMIService = G("winmgmts:" &
    "{impersonationLevel=impersonate,(Backup, Security)}!\\" & strComputer)

     Set colLogFiles = objWMIService.ExecQuery("Select * from Win32_NTEventLogFile")

    For Each objLogFile in colLogFiles
        errBackupLog = objLogFile.BackupEventLog("C:\" & strBackupName &
        strComputer & "-" & objLogFile.LogFileName & ".evt")
        EventLogFile = strBackupName & strComputer & "-" &
        objLogFile.LogFileName & ".evt"
 
        If errBackupLog <0 Then
            WScript.Echo "The " & objLogFile.LogFileName & " could not be cleared from " 
            & strComputer & "."
        Else
            objLogFile.ClearEventLog()
        End If
    Next

    oWSH.MapNetworkDrive "X:", "\\" & strComputer & "\C$"
    oFS.MoveFile "X:\*.evt", "\\<computername>\C$\Script\EventLogs\"
    oWSH.RemoveNetworkDrive "X:"
Next


위 vbscript 는,
WMI를 이용해서 윈도우에 있는 이벤트로그를 특정 evt 파일로 백업하는 스크립트 입니다.

코드내용은 아주 간단한 내용입니다.

위 코드에서 지정해줘야 하는 변수는,

strComputer --> 이벤트로그를 백업하는 로컬 또는 네트워크 컴퓨터
strBackupName  --> 백업파일 저장 이름

errBackupLog 는 WMI BackupEventLog 메소드의 리턴값입니다.

0 : Success 성공
8 : Privilege missing 권한없음
21 : Invalid parameter 파라미터값이 잘못되어 있음
183 : Archive file name already exists 이미 동일한 백업파일명이 있음
         (* 덮어쓰기 옵션도 지원하면 좋을텐데....)


마지막 부분에서, MapNetworkDrive 는 네트워크 드라이브로 연결해서 특정 컴퓨터에 네트워크로 복사하는 것입니다.

이벤트로그 MMC에서 하던것을, 예약작업 관리자에 걸어 놓으면 자동으로 할수가 있겠죠.

댓글 없음:

댓글 쓰기

가장 많이 본 글