Save eventlogfiles for a certain amount of days

Voorheen, toen we nog Windows Server 2003 hadden, kon je aangeven voor hoeveel dagen je de eventlog files wilde bewaren.

event01

Vanaf Windows Server 2008 is die optie echter niet meer aanwezig.

event02

Wel kun je aangeven dat de logfiles ge-archiveerd moeten worden op het moment dat ze vol zijn, maar dat zal (op de lokale server) gebeuren voor onbeperkte tijd? Als de klant ergens op een shared storage een share heeft voor de logs en daar de logfiles wil hebben voor de afgelopen week? Tijd voor een powershell script… uitleg staat in het script.

######################################################################################
# Purpose of this script is to save eventlogfiles for a certain amount of days.
# The number of days to keep the files is determined by variable $NumDaysToSave
#
# To let this function work schedule this script at least once a day! Find the best
# interval by checking the latest event in the log (ie. max logfile size)
#
# Created by Nico Oosterwijk @ 11-06-2014
#####################################################################################
$NumDaysToSave = 7  ### 0 days will only store the last logfile
$TypeLog = "Security"
$server = "YOURSERVER"

### Let's get some timestamps to include them in the logfile name
$year = get-date -f yyyy
$month = get-date -f MM
$day = get-date -f dd
$datum = $year+$month+$day
$tijd = get-date -f HHumm

### The following $logfile will be created by the 'wevtutil' command on the remote $server:
$pad = "C:\LogfilesArchive\"
$logfile = "$($pad)SecurityLog $($server) $($datum)-$($tijd).evtx"

### If the destination folder does not exist, let's create it
$URLPad = "\\$server\c$\LogFilesArchive"
if (!(Test-Path -Path $URLPad))
{
  New-Item -Path $URLPad -ItemType directory -Force
}

### Determine the files to be deleted
$delete = $datum - $NumDaysToSave
$FileToDelete = "$($URLPad)\SecurityLog $($server) $($delete)-*.evtx"
Remove-Item $FileToDelete

### $TypeLog LogFiles will be stored for $NumDaysToSave days on server $server as $logfile
wevtutil export-log $($TypeLog) $logfile /overwrite:true /remote:$($server)

Dit script kan nu met de ‘Task Scheduler‘ uitgevoerd worden. Bijvoorbeel elke 8 uur…