Ryddeskript for tiltjenere

En del programvare genererer mye midlertidige filer, og drifter man filtjenere vet man at det koster å lagre data og å sikre data. For å holde datamengden nede finnes det en del tips, men det vanligste er å slette unødvendige midlertidige filer. Det kan være en tidkrevende og langsom jobb så mange automatiserer det med programmer som CCleaner. Problemet er at de ikke søker etter filer, og at man ikke alltid har kontroll på hva som forsvinner. Derfor valgte jeg å skrive min egen løsning på problemet, og samtidig gjøre meg litt kjent med Microsoft PowerShell.
# TempCleaner.ps1 - Author: [email protected]

if ($args[0] -and $args[1])
{
 if (Test-Path $args[0])
  {

  # Warn you before starting
  Write-host "The targeted folder is:" $args[0] `n -foregroundcolor "Yellow"
  Write-Host "If this is not the intended target, press 'Ctrl + C' to exit" -foregroundcolor "Yellow" `n
  Start-sleep -s 5
  Write-host "Search in progress..." `n
  
  # Filetype explanations:
 
  # ~WR?????.tmp - Word temporary files (See KB211632)
  # ~DF????.tmp - Excel and Works temporary files
  # ppt???.tmp - Powerpoint temporary files
  # .SQM - Software Quality Metrics files (Live Messenger Customer Experience Program logs)
  
  $strFiles = @("~wr?????.tmp","~df????.tmp","sqmdata??.sqm","sqmnoopt??.sqm","ppt???.tmp")
  
  $Files = Get-ChildItem $args[0] -Include $strFiles -Recurse -Force | Where-Object {-not $_.PSIsContainer -and ($_.LastWriteTime -lt (Get-Date).AddDays(-$args[1]))}
  If (-not $Files)
  {
   Write-Host "Nothing to do. No temporary files older than" (Get-Date).AddDays(-$args[1])
   Return
  }
  Foreach ($File in $Files)
  {
   # Add -WhatIf to the line below for a test run
   Remove-Item $File -Force
   Write-Host "Deleting file $File"
   Add-Content .\TempCleaner.log $File
  }
 }
 Else
 {
  Write-Host "The Folder $args[0] does not exist!"
 }
}
Else
{
 Write-Host "This script will clean common Word temporary files older than a set number of days."
 Write-Host "Usage: TmpCleaner.ps1  "
}
Skriptet tar lite med ressurser på maskinen det kjøres fra og maskinen det kjøres mot, men det er ikke spesielt raskt. Jeg kjørte dette på en virtuell Server 2008 maskin mot en Server 2003 filtjener med et volum på ~ 1,3 terabyte for å fjerne filer eldre enn 100 dager. Jobben tok i overkant av 11 timer og fjernet rett over 11600 filer. Send meg gjerne forslag til forbedringer!