Hallo,
ich steh kurz vorm Ende meines Skripts. Das Skript Schreibt Logs in ein Eventlog. Wenn Der Letzte Log Eintrag = dem letzten Eventlog ist soll das Skript nichts machen (funktioniert).
Wenn dies nicht der fall ist soll der die neuen Logs in das Eventlog schreiben. Mein Problem ist es nun, das wenn das Letzte Log != dem Letzten Eventlog ist kopiert er das Gesamte Log neu in den Eventlog (Dadurch hat man natürlich alles doppelt und dreifach im Eventlog.
Was ich nun brauche ist also, dass das Skript wenn Letzte Log != Letzte Eventlog solange die Zeilen liest bis er auf die Zeile stößt die als letztes im Eventlog steht und alles was darunter ist dann prüft und ggf. in das Eventlog schreibt. Sollte er die letzte Eventlog zeile nicht im Log finden, soll er das gesamte Log prüfen.
Ich hoffe man versteht das und klingt plausibel. Ist ein wenig blöd zu erklären.
Falls noch offene Fragen sind bitte einfach stellen. Vielen Dank. :)
ich steh kurz vorm Ende meines Skripts. Das Skript Schreibt Logs in ein Eventlog. Wenn Der Letzte Log Eintrag = dem letzten Eventlog ist soll das Skript nichts machen (funktioniert).
Wenn dies nicht der fall ist soll der die neuen Logs in das Eventlog schreiben. Mein Problem ist es nun, das wenn das Letzte Log != dem Letzten Eventlog ist kopiert er das Gesamte Log neu in den Eventlog (Dadurch hat man natürlich alles doppelt und dreifach im Eventlog.
Was ich nun brauche ist also, dass das Skript wenn Letzte Log != Letzte Eventlog solange die Zeilen liest bis er auf die Zeile stößt die als letztes im Eventlog steht und alles was darunter ist dann prüft und ggf. in das Eventlog schreibt. Sollte er die letzte Eventlog zeile nicht im Log finden, soll er das gesamte Log prüfen.
Ich hoffe man versteht das und klingt plausibel. Ist ein wenig blöd zu erklären.
$Last = (Get-WinEvent -FilterHashtable @{Logname='test'} -MaxEvents 1).Properties[0].Value $LastEventLog = $Last.Substring(1,31) $LastLogFile = Get-Content "C:\Users\user\Desktop\New.log" | select -Last 1 $LastLogFile1 = $LastLogFile.Substring(1,31) $Dat = "C:\Users\user\Desktop\New.log" $TextFound = $False if ($LastLogFile1.Equals($LastEventLog)){ echo "Nichts getan" } else { $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) { $TextFound = $False write-EventLog -LogName test-Source logs -EntryType Error -EventId 1 -Message $line Write-Host $line } } } finally { $reader.Close() } }
Falls noch offene Fragen sind bitte einfach stellen. Vielen Dank. :)