12-07-17-header-2.jpg

 

Die Protokolldateien jeder Web-Site des IIS sammeln sich bei aktivierter Protokollierung an. Wor haben auf einem Exchange Clientaccess Server schon mehr als 20 GB IIS-Logs gefunden.

Es gibt keine Möglichkeit, wie etwa bei Exchange Protokolldateien auf Transportservern, zu konfigurieren, dass alte Protokolldateien gelöscht werden.

Das folgende Skript erledigt die Ausgabe, wobei das Skript alle Web-Sites auf einem Server mit installiertem IIS ermittelt. und bearbeitet. Es kann über die Aufgabenplanung ausgeführt werden.

 

param (               
                [ValidateRange(30,3650)]
                [int]$MaxLogFileAge=100,
                [string[]]$servers=$env:Computername,
                [switch]$CleanUp=$false
)
function Cleanup-IISLogFolder {
param (
                [int]$MaxLogFileAge=100,
                [string]$server,
                [switch]$CleanUp
)
        $WMI = New-Object Management.ManagementScope("\\$Server\root\MicrosoftIISv2");
        $WMI.Options.Authentication = "PacketPrivacy";
        $Query = New-Object Management.ObjectQuery("SELECT  * FROM IIsWebServerSetting");
        $Searcher = New-Object Management.ManagementObjectSearcher($WMI, $Query);
        Trap [UnauthorizedAccessException] {
                Write-Error "$($Server): Unable to connect or Access is denied";
                return $False
                }
        $result = $Searcher.Get();
                foreach ($r in $result) {
                               $path = $r.logFiledirectory.replace(":\","$\")
                               $folder = "\\{0}\{1}\{2}" -f $server,$path,$r.name.replace("/","")
                               $age = (get-date).adddays($MaxLogFileAge*-1)
                               write-host "Cleanup $folder - LogFiles created days $age before."
                               if ($CleanUp -eq $true) {
                                               $X = get-childitem $folder | where {$_.creationtime -lt $Age} | remove-item -whatif
                               } else {
                                               get-childitem $folder | where {$_.creationtime -lt $Age}
                               }
                }
}
foreach ($server in $servers) {
               if ($cleanup) {
                       cleanup-IISLogFolder -maxLogFileAge $maxLogFileAge -server $server -cleanup $cleanUp
              } else {
                        cleanup-IISLogFolder -maxLogFileAge $maxLogFileAge -server $server
              }
}

Hinweis: Entfernen Sie für den Ernstfall das -whatif hinter remove-item (Auch im Skript, dass zum Download bereitsteht.)

Über den Parameter MaxLogFileAge (Angabe in Tagen) wird festgelegt, bis zu welchem Datum die Protokolldateien gelöscht werden (aktuelles Datum – MaxLogFileAge). Das Skript verhindert das Löschen von Dateien, die jünger als 30 Tage sind und älter als 10 Jahre – letztere gehören ins Museum! Mit Servers kann kommagetrennt eine Liste der Server oder nur ein Server angegeben werden. Wenn keine Server angegeben wird, wird der lokale Hosts bearbeitet. Wird Cleanup angegeben, wir gelöscht, sonst werden die Datei, die zu alt sind, nur aufgelistet Das kann zum Beispiel zur Ermittelung deren Gesamtgröße oder zur weiterverarbeitung über die Pipe, zum Beispiel zum Archivieren der Dateien vor den Löschen eingesetzt werden.

Aufruf zum Auflisten auf dem lokalen Server:

.\cleanup-IISLogFiles.ps1 –MaxLogFileAge 200

Aufruf zum Auflisten auf mehreren Servern:

.\cleanup-IISLogFiles.ps1 –MaxLogFileAge 200 –servers  server01,server02

Aufruf zum Löschen auf dem lokalen Server:

.\cleanup-IISLogFiles.ps1 –MaxLogFileAge 200 -cleanup

Aufruf zum Löschen auf mehreren Servern:

.\cleanup-IISLogFiles.ps1 –MaxLogFileAge 200 –servers  server01,server02 -cleanup

 

Download des Skripts

Skript cleanup-iislogFiles.ps1

 

Freigegeben in trevedi Blog

trevedi-logo-weiss

transparent10

trevedi IT-Consulting GmbH
Gottfried-Hagen-Str. 30
51105 Köln

T +49 (0)221 - 3 55 88 88 - 0
E Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!

 

Impressum/Haftungsausschluss

transparent10

transparent10

© trevedi IT-Consulting GmbH 2012

Login

Login