Es gibt Programme oder auch Serverumgebungen, die viel protokollieren und unter Umständen massig an Logdateien generieren. Dies kann unter Umständen regelmäßig dazu führen, dass die Festplatte voll läuft.
Jetzt kann man natürlich jedes Mal händig diese Log-Verzeichnisse aufräumen, aber dies ist sehr zeit intensiv und nervenaufreibend.
Typische Anwendungsgebiete sind Exchange Server, Server wo ein IIS genutzt wird, SBS und Sharepoint Logs oder aber auch das Programm X das einfach zu viel Logdateien generiert.
Ich stelle Ihnen in diesem Beitrag ein kleines Skript vor, das Ihnen Ihr Leben erheblich erleichtern kann, und wenn Sie doch mal Hand anlegen müssen, auch darüber informiert werden.

Wir bedienen uns dabei der PowerShell, da dort diese Aufgabe am einfachsten und sinnigsten umgesetzt werden kann.
Ich will jetzt nicht speziell auf Details eingehen bezüglich PowerShell Befehlen und Syntax, aber hier ist das Herzstück des Skriptes, ein Befehl welcher sich um das Ermitteln der zu alten Dateien kümmert und zur weiteren Verarbeitung in die Variable $itemsFound speichert.
#PsIsContainer means if it is a folder..and compare to the lastWriteTime tresh we have given above..
$itemsFound = Get-ChildItem $LogFolder -Recurse | where{!$_.PsIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-$DateToDelete)}
Es werden also auch nur Logdateien gelöscht, die älter als x Tage als sind. Dies ist auch immer zu empfehlen da aktuelle Logs (egal in welchem Anwendungsgebiet) sehr wichtige Analysemöglichkeiten darstellen.
Im Skript können Sie dabei einen ganzen Ordner angeben oder aber auch mit Wildcards arbeiten, um wirklich nur einen speziellen Typ von Dateien zu löschen (Zum Beispiel C:\temp\*.log). Ich habe zwei Skripte angehängt für die potentiellen Szenarien:
1. Einfaches PowerShell-Skript über geplanten Task (Aufgabenplanung)
- Öffnen Sie die Datei „ClearAnnoyingLogs.ps1“ und ändern Sie die Variablen „daysToDelete“ und „LogFolder“ nach Ihren Wünschen ab.
- Öffnen Sie die geplante Task Ansicht von Windows und lassen Sie das Skript mindestens 1x pro Tag laufen.
- Unter „Programm starten“ geben Sie die powershell.exe an und als Argumente -noninteractive -file „pfad zum ps1 script“
- Es kann notwendig sein, dass Sie den genauen Pfad zur powershell.exe angeben müssen.
- Erstellen Sie in servereye einen geplanten Task Sensor. An Hand des positiven Rückgabewertes (0) bekommen Sie direkt mit, ob der Task erfolgreich durchgelaufen ist.


2. Eigener Sensor in servereye über PowerShell API
- Kopieren Sie Die Datei „ClearAnnoyingLogsSensor.ps1“ in das servereye Verzeichnis unter „scripts“.
- Gehen Sie nun in Ihr OCC und legen auf dem Server den Sensor „Erweiterte PowerShell Skript Überprüfung“ an.
- Tragen Sie als Parameter „-days xyz -path „C:\meinpfad“ ein und wählen Sie anschließend das Skript aus der Liste aus.
- Wenn Sie möchten können Sie nun das Intervall auf Ihre Bedürfnisse anpassen oder sogar Pausenzeiten definieren
Der Vorteil ist, dass Sie die direkte Ausgabe des Skripts immer in Ihrem OCC haben und von den Vorteilen eines eigenen Sensors profitieren.
So liefert das Skript zum Beispiel auch Messwerte, damit Sie immer wissen wie viele Dateien bereinigt wurden.

Weitere Infos, wie Sie PowerShell Skripte zu eigenen Sensoren in servereye umwandeln, finden Sie unter https://servereye.freshdesk.com/support/solutions/articles/14000035882-erweiterter-powershell-sensor
Ich hoffe, ich konnte Ihnen mit diesen zwei Lösungen etwas helfen, die tägliche Logbelastung zu bekämpfen und den Techniker-Alltag etwas einfacher zu gestalten.
Zum Skript-Paket