Como obter o aplicativo para o log de eventos do aplicativo

2

Eu tenho alguns servidores que estão normalmente com erro 1000s. Eu quero descobrir se é o mesmo aplicativo o tempo todo, ou se são aplicativos diferentes. Eu estou usando isso:

Get-EventLog application 1000 -entrytype error -newest 10 | select timegenerated,message | Export-Csv errors.csv

e a saída mostra o nome do aplicativo (especificamente o arquivo exe) como parte do campo de mensagem de várias linhas.

Eu não consegui descobrir como extrair apenas o nome do aplicativo da saída.

Pipar a saída para Get-Member faz com que pareça que o campo da mensagem é uma matriz, mas não consigo descobrir como extrair essa parte da matriz neste momento.

Get-EventLog application 1000 -entrytype error -newest 10 | %{$_.machinename,$_.timegenerated,$_.ReplacementStrings[0]}

Isso me dá a saída que quero, exceto que ele é gerado em três linhas, e o Export-CSV não quer analisá-lo corretamente. Como posso obtê-los todos em uma linha?

    
por Joshua Nurczyk 13.01.2014 / 17:35

1 resposta

3

Provavelmente não será preciso para todos os tipos de evento, mas a propriedade ReplacementStrings é uma matriz em que o primeiro elemento é o nome do executável ao olhar para InstanceID 1000:

> Get-EventLog application 1000 -entrytype error -newest 10 | %{$_.ReplacementStrings[0]}
Ssms.exe
Ssms.exe
Ssms.exe
uniStudio.exe
SwyxIt!.exe
Ssms.exe
uniRTE.exe
uniStudio.exe
Ssms.exe
Ssms.exe

Meu PS-foo é fraco a esta hora da manhã, mas tenho certeza que há uma maneira de combinar isso com seu comando select e, assim, exportá-los para o seu CSV.

De acordo com sua atualização; Isso vai te dar a saída que você precisa em um formato de tabela. Eu não sei quão bem ele vai jogar com export-csv embora:

Get-EventLog application 1000 -entrytype error -newest 10|Format-Table @{Expression={$_.machinename};Label="Machine Name";width=25},@{Expression={$_.timegenerated.DateTime};Label="DateTime";width=25},@{Expression={$_.ReplacementStrings[0]};Label="EXEName";width=25}

Não importa; Eu fui muito complicado na minha última atualização. Isso deve funcionar bem (eu sabia que ficaria melhor no final do dia):

> Get-EventLog application 1000 -entrytype error -newest 10|Select-Object  timegenerated,message,@{name='Executable';expression={$_.ReplacementStrings[0]}}|Export-CSV errors.csv


TimeGenerated                           Message                                 Executable
-------------                           -------                                 ----------
14/01/2014 7:23:13 AM                   Faulting application name: Ssms.exe,... Ssms.exe
13/01/2014 7:26:44 AM                   Faulting application name: Ssms.exe,... Ssms.exe
10/01/2014 7:30:24 AM                   Faulting application name: Ssms.exe,... Ssms.exe
8/01/2014 5:25:13 PM                    The description for Event ID '1000' ... uniStudio.exe
31/12/2013 3:09:58 PM                   The description for Event ID '1000' ... SwyxIt!.exe
19/12/2013 7:35:21 AM                   Faulting application name: Ssms.exe,... Ssms.exe
18/12/2013 2:55:45 PM                   Faulting application name: uniRTE.ex... uniRTE.exe
18/12/2013 9:25:49 AM                   The description for Event ID '1000' ... uniStudio.exe
18/12/2013 7:32:29 AM                   Faulting application name: Ssms.exe,... Ssms.exe
16/12/2013 1:22:38 PM                   Faulting application name: Ssms.exe,... Ssms.exe
    
por 13.01.2014 / 21:37