none
Script para colher Ids do Event Viewer RRS feed

  • Discussão Geral

  • Pessoal,

     

    Eu juntamente com Ricardo Julio desenvolvemos um script em VBS que colhe os Ids de Erro e Atenção do Event Viewer, e inclui esses Ids em uma base de dados mdb. Com esses Ids na base de dados mdb vc pode filtrar os mesmos com um select e contar quantas vezes um determinado Id ocorreu. Assim vc pode depois gerar um relatório dos Ids do event viewer contendo todos os campos de descrição do Evento e com a quantidade que cada evento ocorreu.

    Abaixo segue o código do script:

     

    '************** INICIO DO TRECHO DA CONEXÃO COM O BANCO *********************

    set Conn = CreateObject("ADODB.Connection")
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\nome_db.mdb;Persist Security Info=False"
    Conn.open strConn

    '***************** FIM DO TRCHO DA CONEXÃO COM O BANCO **********************

    '************** INICIO DA BUSCA NO EVENT VIEWER *********************
    On Error Resume Next

    Const wbemFlagReturnImmediately = &h10
    Const wbemFlagForwardOnly = &h20

    arrComputers = Array(".")

    '************** INICIO LIMPAR TABELA DE DADOS *********************
    sStrAccess =  "DELETE FROM checklist_cliente"
    Conn.Execute(sStrAccess)
    '************** FIM LIMPAR TABELA DE DADOS *********************

    For Each strComputer In arrComputers
      


     Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
     Set colItems = objWMIService.ExecQuery("SELECT  EventCode, LogFile, SourceName, TimeGenerated, Type, EventType, Message FROM Win32_NTLogEvent where EventType = 2 or EventType = 1","WQL",wbemFlagReturnImmediately + wbemFlagForwardOnly)

     For Each objItem In colItems
      
      if (isnull(objitem.Message)) then
       objitem.Message = "NA"
      else
       objitem.Message = replace(objitem.Message,chr(13)," ")
         objitem.Message = replace(objitem.Message,chr(10),"")
       objitem.Message = replace(objitem.Message,",","")
       objitem.Message = replace(objitem.Message,":","")
       objitem.Message = replace(objitem.Message,chr(34),"`")     
       objitem.Message = replace(objitem.Message,"'","")     
       objitem.Message = mid(objitem.Message,1,(len(objitem.Message)-2))
       objitem.Message = left(objitem.Message,2000)         
      end if

    '************** FIM DA BUSCA NO EVENT VIEWER ********************* 

      '******** INICIO DO TRECHO DE INSERT NO BANCO *******  

      sStrAccess = "insert into checklist_cliente (Codigo_ID, Data, Tipo_ID, Origem, Tipo, Descricao) values ("
      sStrAccess = sStrAccess & "'" & objItem.EventCode  & "','" & WMIDateStringToDate(objItem.TimeGenerated)  & "','" & objItem.Logfile & "','" & objItem.SourceName & "','" & objItem.Type & "','" & objItem.Message &"')"
      Conn.Execute(sStrAccess)
      
      '***** FIM DO TRECHO DE INSERT NO BANCO ******

    Next  
    Next

    '************** INICIO DA FUNÇÂO DATA *********************
    Function WMIDateStringToDate(dtmDate)
     WMIDateStringToDate = CDate(Mid(dtmDate, 7, 2) & "/" & Mid(dtmDate, 5, 2) & "/" & Left(dtmDate, 4))
    End Function
    '************** FIM DA FUNÇÂO DATA *********************

     

     

    segunda-feira, 7 de maio de 2007 13:29

Todas as Respostas