Ich habe eine Ordnerstruktur mit zum Beispiel 100 Ordnern. Jeder Ordner enthält 200 Dateien.Powershell Dateien löschen, aber letzte x Version beibehalten
Ich möchte (über geplante Aufgabe) alle Dateien in jedem Ordner löschen, aber die letzten 10 Versionen davon behalten.
Ich versuche, in Powershell zu verbessern, so vermute ich, dass dies ziemlich einfach sein sollte. Ich habe dieses Skript erstellt,
#Delete all files, keep last 10 versions#
$Directory = "D:\Octopus\Packages"
$Keep = "10"
Get-ChildItem $Directory| ?{ $_.PSIsContainer } | Select-Object FullName | Export-Csv $Directory\FolderList.csv
$FolderList = import-csv $Directory\FolderList.csv
ForEach ($row in $FolderList)
{
Get-ChildItem -Recurse | where{-not $_.PsIsContainer}| sort CreationTime -desc | select -Skip $Keep | Remove-Item -Force
}
Es scheint durch jeden Ordner werden Looping, aber die letzten 10 Dateien für die gesamte Ordnerstruktur zu halten, nicht pro Ordner. Einige Ordner haben also 0 Dateien, manche 2 Dateien, manche 8 Dateien.
Alle Zeiger würden geschätzt werden
Vielen Dank!
Was meinst du mit "die letzten 10 Versionen davon behalten"? von was? – TheIncorrigible1
Sie geben nicht wirklich den Pfad in Ihrem 'get-childitem' an. Sie werden das in etwas wie 'Get-ChildItem $ row -recurse' ändern wollen. – Nick