2007/10/04

Vbscript - 이벤트로그를 텍스트 파일로 백업하는 방법

다음 스크립트는 이벤트 로그를 텍스트 파일에 백업하는 스크립트입니다. WMI 를 이용하는 방법.

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colEvents = objWMIService.ExecQuery _
    ("Select * from Win32_NTLogEvent Where LogFile='Application'")

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("C:\Scripts\Events.txt")

For Each objEvent in colEvents
    strTimeWritten = objEvent.TimeWritten

    dtmTimeWritten = CDate(Mid(strTimeWritten, 5, 2) & "/" & _
        Mid(strTimeWritten, 7, 2) & "/" & Left(strTimeWritten, 4) _
            & " " & Mid (strTimeWritten, 9, 2) & ":" & _
                Mid(strTimeWritten, 11, 2) & ":" & Mid(strTimeWritten, 13, 2))

    dtmDate = FormatDateTime(dtmTimeWritten, vbShortDate)
    dtmTime = FormatDateTime(dtmTimeWritten, vbLongTime)

    strEvent = dtmDate & vbTab
    strEvent = strEvent & dtmTime & vbTab
    strEvent = strEvent & objEvent.SourceName & vbTab
    strEvent = strEvent & objEvent.Type & vbTab
    strEvent = strEvent & objEvent.Category & vbTab
    strEvent = strEvent & objEvent.EventCode & vbTab
    strEvent = strEvent & objEvent.User & vbTab
    strEvent = strEvent & objEvent.ComputerName & vbTab

    strDescription = objEvent.Message
    If IsNull(strDescription) Then
        strDescription = "The event description cannot be found."
    End If
    strDescription = Replace(strDescription, vbCrLf, " ")
    strEvent = strEvent & strDescription

    objFile.WriteLine strEvent
Next

objFile.Close

코드 설명을 하자면,. 위 스크립트는 응용프로그램 로그를 백업하며, Events.txt 에 저장합니다. 코드 중간에는 이벤트로그 형식의 시간(UTC)을 변환하는 루틴이 추가되어 있습니다.^^


위 스크립트의 경우 로컬 컴퓨터의 정보를 조회하는 것이지만,. 네트워크에 다른 컴퓨터도 조회가 가능합니다. 다만 해당 컴퓨터에 접속 가능한 RPC 권한이 있어야 합니다.

Active Directory 환경에서는 해당 도메인에 속해 있는 컴퓨터 목록을 쉽게 쿼리가 가능하므로 해당 도메인의 모든 컴퓨터의 OS 환경을 정리할수 있겠죠..^^

다음 스크립트는, Active Directory 에서 컴퓨터 목록을 조회하는 스크립트 입니다.

On Error Resume Next

Const ADS_SCOPE_SUBTREE = 2

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

objCommand.CommandText = _
    "SELECT CN FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='computer'" 
Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst

Do Until objRecordSet.EOF
    strComputer = objRecordSet.Fields("Name").Value

    Set objWMIService = GetObject _
        ("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery _
        ("Select * From Win32_OperatingSystem")
    For Each objItem in ColItems
        Wscript.Echo strComputer & ": " & objItem.Caption
    Next

    objRecordSet.MoveNext
Loop





03-TechNetB_masthead_ltr.gif

댓글 없음:

댓글 쓰기

가장 많이 본 글