On a recent project, I needed to delete archive folders that were older than a specified number of days. The thing that made this a little more challenging is that there were Daily, Weekly, and Monthly folders (similar to the screenshot below); each of which had a different retention period.
I found several scripts to delete folders and files older than a specified number of days, but these scripts would delete all the contents of the specified folder. I needed to be able to filter out the Daily, Weekly, or Monthly folders separately to handle their retention period.
This script is can be customized. Change the “-filter” to include the folder names that you want to delete, and change the number of days in the addDays () command.
Another really handy option is to use the -whatif option at the end of the script. This will print out in the powershell window what will be deleted, but it will not delete the files. This will let you test the delete without actually deleting the folders/files. The first delete example below includes the -whatif option so that you can see where it goes.
$thedirectory = "C:\test\ImportFolder\Archive" # use "-whatif" to show what will be deleted without actually deleting anything cd $thedirectory get-childitem $thedirectory -filter "*daily*" |? {$_.psiscontainer -and $_.lastwritetime -le (get-date).adddays(-35)} |% {remove-item $_ -force -recurse -whatif} get-childitem $thedirectory -filter "*weekly*" |? {$_.psiscontainer -and $_.lastwritetime -le (get-date).adddays(-15)} |% {remove-item $_ -force -recurse} get-childitem $thedirectory -filter "*monthly*" |? {$_.psiscontainer -and $_.lastwritetime -le (get-date).addmonths(-25)} |% {remove-item $_ -force -recurse }
This post is part of the blogging phenomenon known as TSQL Tuesday. This month’s blog party is hosted by Wayne Sheffield, who is writing a series of blog posts in the month of February all about powershell. I couldn’t pick just 1 script to share today, so here is my second post on the topic for day.