A rough start for a blog.
Don't expect for long stories about romantic walks outside or whine about evenings when my dog pooped on the floor.There you go, some powershell right in your face!
Problem
Folder has tons of items inside and all the files are irrelevant after 90 days.Irrelevant files need to be deleted.
Solution
I have been using different approaches to do this task. Today my colleague asked for a script that deletes files older than 90 days. Didn't want to give him the "temporary script" I had used before, so I converted it to be oneliner. Here it is:
Read more about running powershell tasks with scheduler from here
Please leave comments if you find this useful or think that this could be achieved in better way.
Get-ChildItem -Path "PUT PATH HERE" -Include "PUT FILTER HERE" -Recurse | where {$_.LastWriteTime -le $(get-date).AddDays(-N)} | Remove-ItemSo you could have it remove all files located in "c:\temp" that have ".txt" extension that have not been updated in past 90 days with the command below:
Get-ChildItem -Path "C:\test" -Include "*.txt" -Recurse | where {$_.LastWriteTime -le $(get-date).AddDays(-90)} | Remove-Item
Conclusion
It is a good idea to remove the last "| Remove-Item" at start and try running it in Console. Review the list of files that would get deleted, if the results get piped to Remove-Item commandlet.
To execute commands as task, you can use the -command parameter for powershell:
-Command "write-host TEST; pause;"You might want to add these arguments also:
–Noninteractive –Nologo
Read more about running powershell tasks with scheduler from here
Please leave comments if you find this useful or think that this could be achieved in better way.
And as a oneliner for task scheduler, it would be:
ReplyDeletepowershell -Command "& { Get-ChildItem -Path "C:\test" -Include "*.txt" -Recurse | where {$_.LastWriteTime -le $(get-date).AddDays(-90)} | Remove-Item } "