fabrihublot
Goto Top

Powershell alle Daten Löschen ausser die 5 neusten

Hallo Zusammen face-smile

Ich habe mit meinem Freund ein kleines Skript gemacht welches alle Daten von path löscht ausser die 5 neusten.
Jedoch würden wir gerne dass das Skript nur *.bak und *.zip löscht wie geht das :D?

HIer unsere Skript:


$ErrorActionPreference = "Stop"
$logDir = "C:\Users\fde\Desktop\logs"
$timeStamp = Get-Date -Format "yyyy.MM.ddHHmm"
$logFile = "PowerShell_transcript_$($timeStamp).txt"
Start-Transcript (Join-Path $logDir $logFile)

$path = "C:\Users\fde\Desktop\test"
$errorLogPath = "C:\Users\fde\Desktop\logs”


$files = Get-ChildItem -Path $path -Recurse
$keep = 5
if ($files.Count -gt $keep) {
$files | Sort-Object CreationTime | Select-Object -first ($files.Count - $keep) | Remove-Item -Force
}


Stop-Transcript


Gruss
FabriHublot

Content-Key: 361455

Url: https://administrator.de/contentid/361455

Printed on: April 26, 2024 at 13:04 o'clock

Mitglied: 135185
135185 Jan 17, 2018 updated at 14:44:50 (UTC)
Goto Top
Die Zeile ändern:
$files = Get-ChildItem -Path "$path\*" -Include '*.bak','*.zip' -Recurse -Force |  ?{!$_.PSIsContainer}  
Member: FabriHublot
FabriHublot Jan 17, 2018 updated at 13:47:18 (UTC)
Goto Top
Jetzt löscht es aber nicht mehr :D
Mitglied: 135185
135185 Jan 17, 2018 updated at 14:45:56 (UTC)
Goto Top
Och nö, du sollst die Zeile ändern nicht die Zeile als Ganzes Skript nehmen .....

Also nochmal zum abtippen und das Löschen außer der 5 aktuellsten vereinfacht
$ErrorActionPreference = "Stop"  
$logDir = "C:\Users\fde\Desktop\logs"  
$timeStamp = Get-Date -Format "yyyy.MM.ddHHmm"  
$logFile = "PowerShell_transcript_$($timeStamp).txt"  
Start-Transcript (Join-Path $logDir $logFile)

$path = "C:\Users\fde\Desktop\test"  
$keep = 5
Get-ChildItem -Path "$path\*" -Include '*.bak','*.zip' -Recurse -Force |  ?{!$_.PSIsContainer} | sort CreationTime -Desc | Select -Skip $keep | remove-Item -Force   
Stop-Transcript
Geht!, und tschö.