Usuário com melhor resposta
Quando acusar um erro nos aplicativos dos logs de eventos do windows, gostaria de disparar um email.

Pergunta
-
Fiz assim:
$emailFrom = "fulano@gmail.com" $senha = "123456"; $emailTo = "ciclano@gmail.com" $subject = "Daily Eventlog Errors" $emailbody = get-eventlog -logname application -after (get-date).addHours(-24) | Where-Object {$_.EventID -eq 1000} | select MachineName, timewritten, source, message |format-table -auto | out-string $message = New-Object Net.Mail.MailMessage($emailFrom, $emailTo, $subject, $emailbody) $smtpServer = "smtp.gmail.com" $smtpClient = New-Object Net.Mail.SmtpClient($smtpServer,587) $SMTPClient.EnableSsl = $true $smtpClient.Credentials = New-Object System.Net.NetworkCredential($emailFrom, $senha); $smtpClient.Send($message)
Mas este script puxa os erros das últimas 24 horas e dispara o email. Eu queria que fosse disparado um email ASSIM que o erro acontecesse.
- Editado Fábio JrModerator quarta-feira, 27 de março de 2013 19:36 Formatação do código
- Tipo Alterado Fábio JrModerator quarta-feira, 27 de março de 2013 19:36 É dúvida
Respostas
-
Complica mais ainda pode ter jeito.
$query = "Select * FROM __InstanceCreationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_NTLogEvent' and TargetInstance.LogFile = 'Application'" #Register WMI event Register-WMIEvent -Query $query -Action { Write-Host "Coloque aqui o código que envia e-mail"}
A cada 5 segundos (WITHIN 5) será verificado se existem novos logs de Aplicação se houver ele executa o -Action.
Ref.:
How Can I Monitor the Event Logs for the Occurrence of a Specific Event?
Fábio de Paula Junior
- Sugerido como Resposta Fábio JrModerator terça-feira, 2 de abril de 2013 10:39
- Marcado como Resposta Fábio JrModerator terça-feira, 9 de abril de 2013 00:27
Todas as Respostas
-
Você tem dois problemas:
1. Se você só quer o último evento então você tem que usar o parametro -newest 1
http://www.computerperformance.co.uk/ezine/ezine173.htm
2. O segundo problema é o disparador, se você quer que quando o evento ocorra imediatamente o script execute então você tem que anexar uma tarefa ao evento.
Fábio de Paula Junior
-
-
Complica mais ainda pode ter jeito.
$query = "Select * FROM __InstanceCreationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_NTLogEvent' and TargetInstance.LogFile = 'Application'" #Register WMI event Register-WMIEvent -Query $query -Action { Write-Host "Coloque aqui o código que envia e-mail"}
A cada 5 segundos (WITHIN 5) será verificado se existem novos logs de Aplicação se houver ele executa o -Action.
Ref.:
How Can I Monitor the Event Logs for the Occurrence of a Specific Event?
Fábio de Paula Junior
- Sugerido como Resposta Fábio JrModerator terça-feira, 2 de abril de 2013 10:39
- Marcado como Resposta Fábio JrModerator terça-feira, 9 de abril de 2013 00:27
-