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

Readline() bis zu einer bestimmten Zeile, danach Schleife ausführen

$
0
0
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.
$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. :)

Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>