Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Log Datei Zeilenweise nach Stichwort prüfen und pro Zeile einen String erstellen

$
0
0

Hallo,

ich habe eine Log Datei in welche alle Fehlercodes je nach Applikation gespeichert werden. Die Fehlercodes lauten z.B. 2596e. Nun möchte ich alle Zeilen welche einen Fehlercode enthalten rausfiltern und in ein eigenes Ereignisprotokol schreiben.

Meine Idee ist es jetzt den Text mit Hilfe von regular Expressions zu durchsuchen und dann für jede Zeile einen eigenen String zu erstellen welchen ich dann ins Ereignisprotokol schreiben kann.

Bis jetzt bin ich hier:

$Dat = "C:\Users\Desktop\New.log"
$TextFound = $False
$reader = [System.IO.File]::OpenText($Dat)
try {
    while ($True) {
        $line = $reader.ReadLine()      
        if ($line -eq $null) { break }
        If($line -match '^[0-9]{4}e{1}$') {
            $TextFound = $True
        }   
       If($TextFound) {        
            $line
            write-EventLog -LogName TEST -Source logs -EntryType Error -EventId 1 -Message $line

        }
   }
}
finally {
    $reader.Close()
}

Das problem ist, dass er in $line nicht nur eine Zeile schreibt sondern alles ab der ersten Expression. Es soll aber wenn ein Errorcode in einer Zeile steht diese Zeile "rauskopiert" werden und danach soll weitergesucht werden bis zum nächsten errorcode, dieser soll dann wieder "rauskopiert" werden.Sodass nachher jede Errorzeile in das Eventlog geschrieben wird.

Zudem kann er im EventLog unter -Message $line nicht einfügen.

Ich komme da einfach nicht weiter und drehe mich Gedanklich im Kreis


Ich hoffe das war verständlich erklärt und ihr könnt mir helfen.





Viewing all articles
Browse latest Browse all 2314