Using Powershell to delete IIS logs older than X days.
I came across a real world requirement to have to use power shell to stop my MS server from clogging up with old IIS logs. It’s pretty bad that MS doesn’t include a simple log rotation method somewhere in the logging handling.
Assuming you’ve installed PowerShell if you need to (it comes with Windows Server 2008 R2) then the first thing to do is open up a PowerShell and alter the execution policy to permit you to run scripts: set-executionpolicy remotesigned
Next create the script itself in Notepad:
get-childitem -Path C:\inetpub\logs\LogFiles -recurse |
where-object {$_.lastwritetime -lt (get-date).addDays(-60)} |
Foreach-Object { del $_.FullName }
The starts at the default logs folder and recursively checks all files down the tree to see if they’re over 60 days since their last write time. If they are then a simple del command removes them.
Save your script as logrotate.ps1
You can then run it from PowerShell by typing from the same directory .\logrotate.ps1
Next you’ll want to make this a scheduled task. The way to execute your new script is to create an entry like this:
powershell.exe c:\scripts\logrotate.ps1 -noprofile -Noninteractive
Set it to a weekly task .
Leave a Reply
You must be logged in to post a comment.