Radera IIS-loggar med automatik

Hur man skriptar underhåll av IIS-loggar med Powershell

Powershell
Vi har skapat ett enkelt skript i Powershell som kan användas till att exempelvis hålla loggarna på en välbesökt webbserver i trim. Dessa loggar växer i såväl storlek som antal om man inte underhåller dessa och manuellt raderar de vid behov.
Vill man slippa detta manuella underhåll, och om man inte har krav på sig att spara undan logfilerna, då har vi skriptet som underlättar din vardag och som hindrar loggfilerna från att fylla din systemdisk.
Loggfilerna för en IIS (Microsoft Internet Information Services) hamnar som default på systemdisken (normalt C:\). Detta gör att vid ohämmad loggfilstillväxt så riskerar systemet att stanna när systemdisken fyllts av dessa filer.

Skriptet - RemoveOldIISlogs.ps1

## Windows PowerShell Code ################################################
#
# NAME: RemoveOldIISlogs.ps1
#
# AUTHOR: Mikael Sköld
# EMAIL: mikeskold(at)gmail(dot)com
# TWITTER: @NTSkalman
# WEBSITE: http://www.msdata.nu/
#
# COMMENT: This script deletes old IIS-logfiles based on the amount
# of days You specify below ($dats). This script is best
# utilized by setting a scheduled task to run it.
#
# You have a royalty-free right to use, modify, reproduce, and
# distribute this script file in any way you find useful, provided that
# you agree that the creator, owner above has no warranty, obligations,
# or liability for such use.
#
# MODIFIED: 2015-06-08
#
###########################################################################

# Set the number of days to keep
$days = 30

# Path to logfiles, default is C:\inetpub\logs\LogFiles
$path = "C:\inetpub\logs\LogFiles"

# Get all the logfiles and delete them
get-childitem -Path $path -recurse | where-object {$_.lastwritetime -lt (get-date).addDays(-$days)} | Foreach-Object { del $_.FullName }
Skriptet kan köras manuellt via Windows Powershell i Windows 7 och uppåt eller Windows Server 2008 och uppåt. Enklast är dock att schemalägga skriptet med hjälp av en Batch-fil och schemaläggaren (Task Scheduler) i Windows.

Batchfilen - RemoveOldIISlogs.bat

powershell.exe C:\Scripts\Maintenance\RemoveOldIISlogs.ps1
Packa upp filen RemoveOldIISlogs.zip (hämtas nedan) så skapas katalogstrukturen C:\Scripts\Maintenance där filerna packas upp. Om ni vill ha dessa på annan plats så glöm inte att ändra sökvägen i filen RemoveOldIISlogs.bat samt i schemaläggningen (se nedan).

Schemalägg jobbet - Task Scheduler

  • Starta Task Scheduler på servern
  • Skapa en ny Task (Create Task)
  • Fyll i följande fält på fliken General med föreslagen text eller egen:
      » Name: Remove Old IIS Logs
      » Description: Delete IIS logs older than 30 days
      » When running task, use the following user account: Skapa en användare för att köra skript eller använd en befintlig med behörighet
      » Markera "Run whether user is logged on or not"
      » Run with highest privileges, Configure for: Windows 7, Windows Server 2008 R2
  • På fliken Triggers sätter ni en tidpunkt varje natt när inte backupen körs
  • Fliken Actions:
      » Start a program: C:\Scripts\Maintenance\RemoveOldIISlogs.bat
      » Start in: C:\Scripts\Maintenance

Hämta filerna