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.