Captura eventos de log do sistema Windows em um arquivo de texto

2

Eu preciso capturar eventos w32time em um arquivo de texto para um requisito de conformidade tolo. Existe uma maneira de fazer isso no Windows?

    
por Vitaliy 28.07.2011 / 22:09

2 respostas

3

Resposta rápida; manualmente, a partir do Visualizador de Eventos, clique no Registro do Sistema e vá para Visualizar > Filtre e escolha W32Time na lista suspensa Fonte de Eventos. Pressione OK. Então vá para Action > Exportar lista e digite seu nome de arquivo. Se você quiser detalhes também, você teria que salvar o arquivo de log inteiro, com Action > Salve o arquivo de log como e escolha Tab Delimeted ou Comma Separated na lista suspensa Salvar como tipo.

Resposta longa é, scripting. Use o WMI para consultar o Win32_NTLogEvent e spool para um arquivo com o FileSystemObject ou o redirecionamento de saída:

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NTLogEvent WHERE SourceName = 'W32Time'",,48)

Dim fso : Set fso = CreateObject("scripting.filesystemobject")
Dim ts : Set ts = fso.CreateTextFile("X:\w32time_events.txt", True)

For Each objItem in colItems
    ts.WriteLine "Category: " & objItem.Category
    ts.WriteLine "CategoryString: " & objItem.CategoryString
    ts.WriteLine "ComputerName: " & objItem.ComputerName
    ts.WriteLine "Data: " & objItem.Data
    ts.WriteLine "EventCode: " & objItem.EventCode
    ts.WriteLine "EventIdentifier: " & objItem.EventIdentifier
    ts.WriteLine "EventType: " & objItem.EventType
    ts.WriteLine "InsertionStrings: " & objItem.InsertionStrings
    ts.WriteLine "Logfile: " & objItem.Logfile
    ts.WriteLine "Message: " & objItem.Message
    ts.WriteLine "RecordNumber: " & objItem.RecordNumber
    ts.WriteLine "SourceName: " & objItem.SourceName
    ts.WriteLine "TimeGenerated: " & objItem.TimeGenerated
    ts.WriteLine "TimeWritten: " & objItem.TimeWritten
    ts.WriteLine "Type: " & objItem.Type
    ts.WriteLine "User: " & objItem.User
    ts.WriteBlankLines 1
Next

ts.Close

Set ts = Nothing
Set fso = Nothing
Set colItems = Nothing
Set objWMIService = Nothing

Opção de trapaça, se você não pode ser incomodado; a partir de um prompt de comando cmd , tente:

wmic NTEVENT | find /i "W32Time" > W32Time_Events.txt

HTH

J.

    
por 28.07.2011 / 23:36
1

Você não especificou qual versão do Windows está sendo executada. A partir do Win2k8 você pode anexar tarefas a eventos, portanto, é possível alguma automação. Você teria que escrever um script que possa anexar o evento a um arquivo de texto. Infelizmente é um pouco entediante, já que você teria que definir isso para cada evento que eu acredito.

Outra opção é configurar uma ferramenta de monitoramento de log de eventos como EventSentry , que pode monitorar seu log de eventos em tempo real e registrar eventos (de acordo com suas regras) para uma variedade de formatos, incluindo arquivos de texto e bancos de dados. A vantagem é que seu log de eventos agora é monitorado em tempo real e também pode ser dimensionado para várias máquinas, se necessário. Você também obtém o benefício adicional de ter acesso a outros recursos úteis.

Disclaimer: Eu trabalho para netikus.net.

    
por 29.07.2011 / 17:31