Sebialt 0 Geschrieben 2. Mai 2017 Melden Teilen Geschrieben 2. Mai 2017 Ich habe ein kleines Problem und vielleicht kann mir ja jemand helfen. Ich durchsuche mittels Powershell eine LOG-Datei und beim Finden von einem bestimmten Pattern versendet das Script eine E-Mail. IF (Select-String -path "Pfad\Error.log" -Pattern "Error1") { Send-MailMessage -to "Adresse1@Domain.de" -from "Adresse2@Domain.de" -Subject "Fehler gedunden." -body "Fehler bla bla bla..." -Encoding ([System.Text.Encoding]::UTF8) } Das Script wird über die Aufgabenplanung alle paar Minuten aufgerufen. Nun kann es natürlich vorkommen, dass ein Fehler auftritt (im Log steht das Pattern) und eine E-Mail versendet wird.Behebe ich nun diesen Fehler, steht im Error.log (es wird jeden Tag neu erzeugt) immer noch der Fehler "Error1" und es wird beim nächsten Durchlaufen des Scrips eine E-Mail versendet. Das möchte ich gerne verhindern. Mein Ansatz wäre, die Anzahl der "Error1" Einträge zu zählen und die Anzahl in eine Datei zu schreiben. Das Script könnte dann vergleichen ob die Anzahl steigt -> dann E-Mail versenden oder gleich ist -> dann keine E-Mail versenden. Wie könnte ich das in Powershell umsetzen?Oder hat vielleicht jemand eine andere Idee, wie ich meine Vorhaben umsetzen kann? Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 2. Mai 2017 Melden Teilen Geschrieben 2. Mai 2017 Wenn es sowieso neu erzeugt wird, kann man es nicht einfach löschen / leeren, nachdem es "bearbeitet" / "gescannt" wurde? Zitieren Link zu diesem Kommentar
MurdocX 949 Geschrieben 2. Mai 2017 Melden Teilen Geschrieben 2. Mai 2017 Falls das Skript nicht beendet wird, könntest du über eine Schleifen-Variable den Stand speichern und wieder abrufen. Andernfalls Olaf seinen Vorschlag eher in betracht ziehen. Zitieren Link zu diesem Kommentar
Sebialt 0 Geschrieben 2. Mai 2017 Autor Melden Teilen Geschrieben 2. Mai 2017 Das Error.log wird um 0:00 Uhr automatisch umbenannt und gespeichert (Datum_Error.log) und eine neues (Error.log) wird generierte. ... kann man es nicht einfach löschen ... Löschen kann ich es nicht einfach, da die alten Logs 30 Tage aufgehoben werden müssen. Falls das Skript nicht beendet wird ... Das Script wird nach jedem Lauf beendet, sodass der Wert in einer Variablen verloren gehen würde. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 2. Mai 2017 Melden Teilen Geschrieben 2. Mai 2017 Hmmm ... Du bräuchtest dann wohl doch eine "Zählvariable". Die Kannst Du dann (pro Tag) auswerten und entsprechend reagieren. Oder Du schreibst - so wie Du es oben schon selbst angeregt hast - den "Zähler" in eine Datei und liest diesen dann aus. Was genau fehlt Dir denn für die Umsetzung der Zählvariable? Zitieren Link zu diesem Kommentar
MurdocX 949 Geschrieben 2. Mai 2017 Melden Teilen Geschrieben 2. Mai 2017 Um das Skript am "leben" zu halten, könntest du es einmal am Tag via der Aufgabenplanung starten und es läuft den ganzen Tag durch. $Date = (Get-Date).ToShortDateString() do { ... ... Start-Sleep -Seconds 300 # 5 Minuten warten... } while ( ((Get-Date).ToShortDateString()) -eq $Date ) Zitieren Link zu diesem Kommentar
Sebialt 0 Geschrieben 2. Mai 2017 Autor Melden Teilen Geschrieben 2. Mai 2017 Was genau fehlt Dir denn für die Umsetzung der Die Anzahl kann ich mir in eine Datei schreiben (müsste so eigentlich gehen) $VarA = Select-String -path "Pfad\Error.log" -Pattern "Error1" $VarA.Matches.Count | Out-File -Filepath "Pfad\Flag.txt" Aber wie kann ich das mit der Anzahl eines neuen Durchlaufs vergleichen? Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 2. Mai 2017 Melden Teilen Geschrieben 2. Mai 2017 Du liest den Inhalt der Datei mit Get-Content ein. Dabei erhältst Du einen String. Den kannst Du zum Integer "casten" und kannst das dann mit Deinem $VarA.Matches.Count vergleichen. ... also ungefähr so [INT]$SavedCount = Get-Content -Path "Pfad\Flag.Txt" ... jetzt hast Du die vorher dort gespeicherte Anzahl in der Variablen $SavedCount und kannst damit weiterspielen. ;) ... was mir noch einfällt ... Du müsstest dann vielleicht noch das Datum der Datei Flag.txt mit beachten, damit Du nicht beim ersten Durchlauf des Tages den "Error-Count" mit dem Vortag vergleichst. ;) Zitieren Link zu diesem Kommentar
Sebialt 0 Geschrieben 2. Mai 2017 Autor Melden Teilen Geschrieben 2. Mai 2017 Das werde ich testen, komme aber erst am Donnerstag dazu. Danke schon mal. :thumb1: Zitieren Link zu diesem Kommentar
daabm 1.354 Geschrieben 6. Mai 2017 Melden Teilen Geschrieben 6. Mai 2017 Hm - in den Logs, die ich so schreibe, hat jeder Eintrag einen Zeitstempel. Wenn das bei Dir auch so ist, müßtests Du ja nur den Zeitstempel extrahieren und Dir merken... Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.