Shell Logs überwachen
Hallo,
ich versuche mich gerade an einer Logfileüberwachung. Leider bin ich mit dem Thema noch nicht so vertraut und probiere mittlerweile schon ein bisschen. Das PowerShell Skript soll die Logdatei auf einen bestimmten String durchsuchen und wenn der String vorhanden ist eine E-Mail senden. Das Funktioniert auch soweit, nur in dem log Ordner erstellen sich nach der Zeit immer neue Log Dateien. Ich hatte es am liebsten so, dass er sich immer die nimmt die neu dazugekommen sind und die auf den String untersucht. (Das Skript wird über die Windows -Aufgaben gesteuert.)
Mein momentanes Skript sieht so aus:
ich versuche mich gerade an einer Logfileüberwachung. Leider bin ich mit dem Thema noch nicht so vertraut und probiere mittlerweile schon ein bisschen. Das PowerShell Skript soll die Logdatei auf einen bestimmten String durchsuchen und wenn der String vorhanden ist eine E-Mail senden. Das Funktioniert auch soweit, nur in dem log Ordner erstellen sich nach der Zeit immer neue Log Dateien. Ich hatte es am liebsten so, dass er sich immer die nimmt die neu dazugekommen sind und die auf den String untersucht. (Das Skript wird über die Windows -Aufgaben gesteuert.)
Mein momentanes Skript sieht so aus:
# Angaben für die if abfrage.
$DateipfadLogFile = "C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung\JBossCursor-CRM_Port01_WWF.log.4"
$Fehlermeldung = "*Pinging the JVM took*"
# Daten für den Mail Versand
$EmailFrom = “*****@****.de”
$EmailTo = “******@*******.de”
$Subject = "Logfileüberwachumg”
$Body = “In der Datei: $DateipfadLogFile wurden Meldungen wie diese gefunden: Pinging the JVM took.”
$SMTPServer = “smtp.outlook.com”
# Passwort:
#$secure = read-host -assecurestring
$encrypted = convertfrom-securestring -secureString $secure -key (1..16)
$encrypted | set-content C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung\encrypted.txt
$secure2 = get-content C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung\encrypted.txt | convertto-securestring -key (1..16)
$UnsecurePassword = (New-Object PSCredential "username",$secure2).GetNetworkCredential().Password
# Abfrage der Log Datei auf eine bestimmte Fehlermeldung.
if ((Get-Content -Path "$DateipfadLogFile") -like $Fehlermeldung)
# Wenn es wahr ist wird eine E-Mail verschickt.
{
write-host "gefunden"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“*******@******.de”, “$UnsecurePassword”);
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
}
# Es wurde keine Fehlermeldung gefunden.
else {
write-host "nicht gefunden"
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 540718
Url: https://administrator.de/forum/shell-logs-ueberwachen-540718.html
Ausgedruckt am: 25.04.2025 um 10:04 Uhr
7 Kommentare
Neuester Kommentar

$found = Get-ChildItem 'C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung' -File -Recurse | ?{(gc $_.Fullname -raw) -like '*Pinging the JVM took*'}
if ($found.Count -gt 0){
# mail
}
oder auch
$found = Select-String 'C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung\*.*' -Pattern 'Pinging the JVM took' -SimpleMatch -List | select -Expand Path
if ($found){
# mail
}
usw.....
Bitte dringend Code Tags im Thread benutzen !! So ist das vollkommen unleserlich ! 
FAQs mal vorher lesen hilft wirklich !!
Formatierungen in den Beiträgen
Kann man übrigens auch immer noch nachträglich unten rechts über den "Bearbeiten" Button korrigieren ! Die Forums Community wird es dir danken.
FAQs mal vorher lesen hilft wirklich !!
Formatierungen in den Beiträgen
Kann man übrigens auch immer noch nachträglich unten rechts über den "Bearbeiten" Button korrigieren ! Die Forums Community wird es dir danken.

Zitat von @Alfredo64:
Hallo Serial,
vielen Dank für die schnelle ich habe es mit der zweiten Varieante versucht die Funktioniert auch schon einigermaßen obwohl sie Fehler mit ausgibt was ich nicht verstehe:
Ist doch eindeutig, dir fehlen die Zugriffsrechte Hallo Serial,
vielen Dank für die schnelle ich habe es mit der zweiten Varieante versucht die Funktioniert auch schon einigermaßen obwohl sie Fehler mit ausgibt was ich nicht verstehe:
sls : Die Datei "C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung\logs" kann nicht gelesen werden: Der Zugriff auf den Pfad "C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung\logs"
> wurde verweigert..
> In Zeile:1 Zeichen:10
> + $found = sls 'C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung ...
können sie eventuel noch ein zwei sätze dazu schreiben was doert passiert ich würde es gerne auch ein bisschen verstehen.
Bitte, alles was du wissen musst steht hier: Select-String

Der erste Schritt zum Guru
.