Как получить приложение для журнала событий приложения

Как получить приложение для журнала событий приложения

У меня есть несколько серверов, на которых часто возникают ошибки 1000. Я хочу узнать, одно ли это приложение все время или это разные приложения. Я использую это:

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

а в выходных данных отображается имя приложения (в частности, exe-файла) как часть многострочного поля сообщения.

Мне не удалось понять, как извлечь из вывода только имя приложения.

Передача вывода в Get-Member создает впечатление, что поле сообщения — это массив, но на данный момент я не могу понять, как извлечь эту часть массива.


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

Это дает мне нужный мне вывод, за исключением того, что он сгенерирован на трех строках, и Export-CSV не хочет его правильно анализировать. Как мне получить их все на одной строке?

решение1

Это, вероятно, не будет точным для всех типов событий, но свойство ReplacementStringsпредставляет собой массив, где первым элементом является имя исполняемого файла при просмотре 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

В это время утра мой PS-foo слаб, но я уверен, что есть способ объединить его с вашей selectкомандой и таким образом экспортировать их в ваш CSV.


Согласно вашему обновлению; это даст вам нужный вывод в табличном формате. Я не знаю, насколько хорошо это будет работать с export-csv:

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}

Неважно; я слишком усложнил последнее обновление. Это должно работать отлично (я знал, что позже в тот же день я буду лучше):

> 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

Связанный контент