Zip and Delete IIS Logs with Powershell

Hallo zusammen,

Ihr seid verantwortlich für Server mit installiertem IIS und die Logs des Webservers füllen langsam die Disk. Gerade die IIS Logs vom Exchange Server füllen mir regelmässig die Disk.

Damit ich nicht für jede Website ein Konfigurationsfile anpassen muss, habe ich ein Script geschrieben, welche den IIS ausliest und dort den Pfad der Logdateien für jede Website ausliest. Anschliessend werden für jede dieser Websites die *.log in ein ZIP File geschrieben und die Logdatei anschliessend gelöscht. Nach einem definierten Zeitraum werden auch die ZIP Dateien gelöscht.

Das Script benötigt .Net 4.x wegen der ZIP Funktion.

Die Daten, ab wann gezippt, die Logs gelöscht und die ZIP Dateien gelöscht werden, können mit Parametern in Form von einem Datum übergeben werden.

Gibt man keine Parameter an, so werden die Logfiles älter als 30 Tage gezippt und gelöscht. ZIP Files älter als 60 Tage gelöscht.

Dieses Verhalten kann man auch ganz einfach in Scipt anpassen.

Param(
    [DateTime]$StartToZip = (Get-Date).AddDays(-30),
 [DateTime]$StartToDeleteLog = (Get-Date).AddDays(-30),
 [DateTime]$StartToDeleteZip = (Get-Date).AddDays(-60)
 )

Genau dies habe ich im folgenden Screenshot gemacht. Files älter als 10 Tage zippen und löschen.

  • In Cyan werden die einzelnen Websites ausgegeben.
  • In Grün wird angezeigt, wenn ein ZipFile erstellt wird.
  • In Magenta wird angezeigt, wenn ein File gelöscht wird.

So sieht das ganze in Aktion aus.

Herunterladen des Powershell Scripts ZIPandDeleteIISLog.zip

Grüsse
Andres Bohren