2017-05-03 1 views
1

Image of the error log Ich möchte die "Nachrichten:" (in der Registerkarte Generals) Zeile "CCIS_Error_Log_2017-05-03.csv" in einer neuen Spalte jeder Zeile das entsprechende Ereignis zuordnen.Wie fügt man einer neuen Spalte und jeder Zeile in einem CSV verschiedene Zeichenketten hinzu?

(Get-WinEvent -FilterHashTable @{logname = 'CCIS'; } | where {$_.LevelDisplayName -eq "Error"}|select Message)|Set-Content -Path "C:\Logs\temp.txt" 

Import-Csv C:\CCIS_Error_Log_2017-05-03.csv|select-object *,@{Name="Messages";Expression={select-string C:\Logs\temp.txt -pattern "Message:" | foreach {$_.Line}}} | Export-Csv C:\Logs\CCIS_Error_Log_2017-05-03.csv -notypeinformation 

Dies ist ein Segment des Skripts, das ich schrieb, um das obige Szenario zu tun. Stattdessen werden die "Messages" in jedem Ereignis in eine einzelne Zeile in der CSV-Datei kopiert.

Ich hoffe, dass ich erklärte es gut Vielen Dank im Voraus

+0

Auf welche Weise können Sie die Zeilen in der CSV-Datei den Ereignissen im Ereignisprotokoll zuordnen? ZB haben sie den gleichen Zeitstempel oder einen anderen ID-Schlüssel? Einige Beispieleinträge aus der CSV-Datei könnten hilfreich sein. –

+0

"Id, TimeCreated, LevelDisplayName, ProviderName" Dies sind die Spaltennamen – oneGAWDabv

+0

OK, so dass Sie TimeCreated verwenden können, aber nur wenn die Zeitstempel im selben Format sind und exakt übereinstimmen. Sind die Ereignisse in der CSV aus dem Ereignisprotokoll oder einer anderen Quelle? –

Antwort

0

Wenn es möglich ist, die Ereignisse auf die Einträge in den Fehler CSV-Datei genau von Zeitpunkt abzubilden dann könnte dies eine Lösung sein (geht davon aus, dass es eine Zeitmarke ist Spalte in der CSV-Datei):

$Events = Get-WinEvent -FilterHashTable @{logname = 'CCIS'} | Where {$_.LevelDisplayName -eq "Error"} 
$ErrorLog = Import-Csv C:\CCIS_Error_Log_2017-05-03.csv 

$ErrorLog | ForEach-Object { 

    $LogEntry = $_ 
    $Event = $Events | Where {$_.Id -eq $LogEntry.Id} 

    If ($Event){ 
     Write-Output ($LogEntry | Select *,@{Name='Message';Expression={$Event.Message}}) 
    }Else{ 
     Write-Warning "Could not locate a matching message for $LogEntry" 
    } 

} | Export-CSV C:\Logs\CCIS_Error_Log_2017-05-03.csv -NoTypeInformation 
+0

Das Problem ist "ID" noch der "Zeitstempel" (Serverzeit ist lokale Zeit, während die Anwendungszeit in einer anderen Zeitzone ist) ist daher einzigartig, ich kann die Abfrage nicht zuordnen. – oneGAWDabv

+0

gibt es eine andere Möglichkeit, ich kann dies tun Ich habe einen Screenshot http://imgur.com/a/tM5jZ angeschlossen – oneGAWDabv

Verwandte Themen