Auf Backup-Servern kann es durchaus sinnvoll sein zu alte Filebackups zu löschen um das Volllaufen des Servers zu vermeiden.
Mit Get-ChildItem lassen wir uns alle Objecte innerhalb eines Pfades anzeigen und übergeben diese per „|“ (Pipe) an „Where-Object“ um dann nach der CreationTime (älter als 15 Tage) zu filtern. Die nach der Filterung resultierende Datenmenge wird mit „Remove-Item -Force“ gelöscht
der Powershell Code um alte Daten zu löschen
Wie gewohnt wieder mit etwas Schnickschnack für eine vernünftige Ausgabe und Troubleshooting.
$cleanup_locations=@("D:\Backup\db_dumps\","D:\FTP-Backup\")
$retentiontime_in_days = (Get-Date).AddDays(-15)
$debug=0
foreach ($path in $cleanup_locations){
if(Test-Path $path -PathType Container){
# Delete files older than the $retentiontime_in_days.
write-host "cleanup $path"
if($debug -eq 0){
Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $retentiontime_in_days } | Remove-Item -Force
}else{
Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $retentiontime_in_days }
}
}else{
write-host "$path does not exists"
}
}