
Tengo algunos servidores que comúnmente tienen errores 1000. Quiero saber si es la misma aplicación todo el tiempo o si son aplicaciones diferentes. Estoy usando esto:
Get-EventLog application 1000 -entrytype error -newest 10 | select timegenerated,message | Export-Csv errors.csv
y el resultado muestra el nombre de la aplicación (específicamente el archivo exe) como parte del campo de mensaje de varias líneas.
No he podido descubrir cómo extraer solo el nombre de la aplicación del resultado.
Canalizar la salida a Get-Member hace que parezca que el campo del mensaje es una matriz, pero no puedo entender cómo extraer esa parte de la matriz en este momento.
Get-EventLog application 1000 -entrytype error -newest 10 | %{$_.machinename,$_.timegenerated,$_.ReplacementStrings[0]}
Esto me da el resultado que quiero, excepto que se genera en tres líneas y Export-CSV no quiere analizarlo correctamente. ¿Cómo puedo ponerlos todos en una sola línea?
Respuesta1
Probablemente no sea exacto para todos los tipos de eventos, pero la propiedad ReplacementStrings
es una matriz donde el primer elemento es el nombre del ejecutable cuando se mira 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
Mi PS-foo está débil a esta hora de la mañana, pero estoy seguro de que hay una manera de combinarlo con tu select
comando y así exportarlos a tu CSV.
Según su actualización; esto le proporcionará el resultado que necesita en formato de tabla. Aunque no sé qué tan bien funcionará 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}
No importa; Me complicé demasiado en mi última actualización. Esto debería funcionar bien (sabía que estaría mejor más tarde ese mismo día):
> 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