none
Criar arquivo .evt personalizado do event viewer RRS feed

  • Pergunta

  • Prezados,

    Gostaria de automatizar a seguinte tarefa:

    - Geração diária de um arquivo .evt personalizado com os Event IDs 4660 e 4663.

    - Se possível, que fique armazenado por um período de 60 dias em uma determinada pasta na rede.

    Pode ser um script ou, se houver, uma configuração que resolva isso.

    Em uma conversa anterior fui auxiliado na geração de um script (http://social.technet.microsoft.com/Forums/pt/scriptadminpt/thread/fbd69b2f-e6b0-48c5-bf8d-f048f683c3ea), ele funciona porém como o arquivo de logs gerado por dia é muito grande, o script roda por muitas horas.

    Gerar esse arquivo personalizado irá agilizar a busca de informações de arquivos deletados quando for necessário.

    Ao mandar deletar um arquivo é gerado o event ID 4663 (no event viewer, nos detalhes, na opção access aparece a tag DELETE), porém se o usuário cancelar a deleção do arquivo o evento fica registrado sem o arquivo ser delatado, dessa forma não é possível afirmar que o objeto foi deletado. Já o event ID 4660, em sua descrição aparece "An object was deleted", confirmando que o objeto foi deletado, porém não aparece o caminho do objeto deletado.

    Desde já agradeço.


    segunda-feira, 3 de setembro de 2012 22:18

Respostas

  • Elton,

    Teste este PowerShell. Veja que ele não é "puro" PowerShell, ele depende do utilitário wevtutil que é nativo do Windows 7/2008.

    #Configurações
    $PastaExportacao="C:\temp"
    
    #Pega data de ontem
    $Ontem=(get-date).adddays(-1)
    #Data Inicial
    $DTI = Get-Date $Ontem.ToShortDateString()
    #Data Final
    $DTF = Get-Date ($Ontem.ToShortDateString()+" 23:59:59")
    
    #Gera nome do arquivo exportado
    $NDia="0"+$Ontem.Day;$NDia=$NDia.Substring($NDia.length - 2,2)
    $NMes="0"+$Ontem.Month;$NMes=$NMes.Substring($NMes.length - 2,2)
    $NAno=$Ontem.Year
    $FormatoNome= "$NAno$NMes$NDia"+".evt"
    $ArquivoExportado = join-path $PastaExportacao $FormatoNome
    remove-item $ArquivoExportado -force -ErrorAction SilentlyContinue
    
    #Funcao
    function GetMilliseconds ($date) {
        $ts = New-TimeSpan -Start $date -End (Get-Date)
        [math]::Round($ts.TotalMilliseconds)
        } # end function
    
    
    $startDate = GetMilliseconds(Get-Date $DTI)
    $endDate   = GetMilliseconds(Get-Date $DTF)
    wevtutil epl Security $ArquivoExportado /q:"*[System
                                                        [TimeCreated[timediff(@SystemTime) >= $endDate] 
                                                            and 
                                                         TimeCreated[timediff(@SystemTime) <= $startDate]
                                                            and
                                                         ((EventID=4660) or (EventID=4663))
                                                        ]
                                                    ]"

    O script vai exportar os dados do dia anterior, então basta vc executar este script uma vez por dia.Vc também disse que gostaria de manter por apenas 60 dias, neste caso procure aqui no fórum por um script que apague por data, tem vários exemplos, todos mês alguem pergunta por isso, vc pode pegar um pronto e agendar pra rodar todo dia na pasta onde vc guarda os logs exportados.

    Ref.:

    How to backup application event log to .evtx file using powershell
    http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/d3bd105f-3c1c-4aea-b3e6-a5e601145cf3/


    Fábio de Paula Junior



    terça-feira, 25 de setembro de 2012 23:32
    Moderador

Todas as Respostas

  • Prezados,

    Gostaria de automatizar a seguinte tarefa:

    - Geração diária de um arquivo .evt personalizado com os Event IDs 4660 e 4663.

    - Se possível, que fique armazenado por um período de 60 dias em uma determinada pasta na rede.

    Pode ser um script ou, se houver, uma configuração que resolva isso.

    Em uma conversa anterior fui auxiliado na geração de um script (http://social.technet.microsoft.com/Forums/pt/scriptadminpt/thread/fbd69b2f-e6b0-48c5-bf8d-f048f683c3ea), ele funciona porém como o arquivo de logs gerado por dia é muito grande, o script roda por muitas horas.

    Gerar esse arquivo personalizado irá agilizar a busca de informações de arquivos deletados quando for necessário.

    Ao mandar deletar um arquivo é gerado o event ID 4663 (no event viewer, nos detalhes, na opção access aparece a tag DELETE), porém se o usuário cancelar a deleção do arquivo o evento fica registrado sem o arquivo ser delatado, dessa forma não é possível afirmar que o objeto foi deletado. Já o event ID 4660, em sua descrição aparece "An object was deleted", confirmando que o objeto foi deletado, porém não aparece o caminho do objeto deletado.

    Desde já agradeço.


    Olá Elton, já tem alguma solução sobre os scripts?
    segunda-feira, 24 de setembro de 2012 20:10
  • Elton,

    Teste este PowerShell. Veja que ele não é "puro" PowerShell, ele depende do utilitário wevtutil que é nativo do Windows 7/2008.

    #Configurações
    $PastaExportacao="C:\temp"
    
    #Pega data de ontem
    $Ontem=(get-date).adddays(-1)
    #Data Inicial
    $DTI = Get-Date $Ontem.ToShortDateString()
    #Data Final
    $DTF = Get-Date ($Ontem.ToShortDateString()+" 23:59:59")
    
    #Gera nome do arquivo exportado
    $NDia="0"+$Ontem.Day;$NDia=$NDia.Substring($NDia.length - 2,2)
    $NMes="0"+$Ontem.Month;$NMes=$NMes.Substring($NMes.length - 2,2)
    $NAno=$Ontem.Year
    $FormatoNome= "$NAno$NMes$NDia"+".evt"
    $ArquivoExportado = join-path $PastaExportacao $FormatoNome
    remove-item $ArquivoExportado -force -ErrorAction SilentlyContinue
    
    #Funcao
    function GetMilliseconds ($date) {
        $ts = New-TimeSpan -Start $date -End (Get-Date)
        [math]::Round($ts.TotalMilliseconds)
        } # end function
    
    
    $startDate = GetMilliseconds(Get-Date $DTI)
    $endDate   = GetMilliseconds(Get-Date $DTF)
    wevtutil epl Security $ArquivoExportado /q:"*[System
                                                        [TimeCreated[timediff(@SystemTime) >= $endDate] 
                                                            and 
                                                         TimeCreated[timediff(@SystemTime) <= $startDate]
                                                            and
                                                         ((EventID=4660) or (EventID=4663))
                                                        ]
                                                    ]"

    O script vai exportar os dados do dia anterior, então basta vc executar este script uma vez por dia.Vc também disse que gostaria de manter por apenas 60 dias, neste caso procure aqui no fórum por um script que apague por data, tem vários exemplos, todos mês alguem pergunta por isso, vc pode pegar um pronto e agendar pra rodar todo dia na pasta onde vc guarda os logs exportados.

    Ref.:

    How to backup application event log to .evtx file using powershell
    http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/d3bd105f-3c1c-4aea-b3e6-a5e601145cf3/


    Fábio de Paula Junior



    terça-feira, 25 de setembro de 2012 23:32
    Moderador
  • Prezado Fábio,

    Agradeço a ajuda. O script funcionou perfeitamente.

    Mais uma vez obrigado.

    quarta-feira, 17 de outubro de 2012 22:10