powershell e usando get-eventlog

2

Estou tentando criar um script que extraia tentativas de logon em determinados eventos nas últimas 24 horas, mas não consigo descobrir como extrair as informações da conta. O usuário é nulo o tempo todo, então a informação está em branco, mas quando eu olho na aba geral eu posso ver "Informações da conta".

Gostaria de extrair e adicionar o que é mostrado na exibição XML em "dados do evento", que é TargetUserName. Como posso fazer isso? O que eu tenho até agora funciona bem, mas eu preciso das informações de nome de usuário e o que meu script puxa está sempre em branco.

System - Windows Server 2008 R2 Log Eu estou puxando de log de segurança com o ID do evento 4625,4768,4771,4772 para as últimas 24 horas.

Meu código:

get-eventlog Security 4625,4768,4771,4772 -after ((get-date).addDays(-1))| export-csv
    
por MJT 25.03.2014 / 02:32

2 respostas

1

Tente o seguinte: ele extrairá TargetUserName da mensagem do evento e o adicionará como nova coluna ao evento original. Agora você poderá exportá-lo para c: \ temp \ yourlog.csv ou onde for necessário.

get-eventlog Security 4625,4768,4771,4772 -after ((get-date).addDays(-1)) | % {
     $TargetUserName = $_.message.split("'n") | Select-String "Account Name:"; 
     $_ | Add-Member -MemberType NoteProperty -Name TargetUserName -Value $TargetUserName[0];
     $_ } | Export-CSV "c:\temp\yourlog.csv" -notypeinformation
    
por 25.03.2014 / 12:00
0

Como o evento retorna um objeto XML, você precisará analisá-lo para obter as informações do usuário. Eu uso isso para pegar contas bloqueadas através do agendador de tarefas e me envia as informações XML como texto para que eu possa revisá-las. Ele não responde à sua pergunta, mas pode funcionar para você como uma solução alternativa. Eu prefiro saber sobre os eventos imediatamente, em vez de seguir o fato. Há um erro em que, se ele for disparado e houver outro evento nesse meio tempo, o script examinará apenas o evento mais recente. então tenha isso em mente. Para minha configuração, que recebe talvez um desses por dia, tudo bem.

$5MinutesAgo = [DateTime]::Now.AddMinutes(-5)
$messageParameters = @{ 
Subject = "User Account Locked/Unlocked on VADS01" 
Body = Get-EventLog "Security" | 
Where {$5MinutesAgo -le $_.TimeWritten -and ($_.eventid -eq 4740 -or $_.eventid -eq 4767)} |
Format-List | 
Out-String 
From = "[email protected]" 
To = "[email protected]" 
SmtpServer = "smtp01.domain.com" } 
Send-MailMessage @messageParameters
    
por 25.03.2014 / 03:16

Tags