Powershell script um Veraltete Software Cache Ordner zu löschen
Hallo Administrator Forum Community,
Ich bin dabei mich im Thema Powershell neu einzuarbeiten, da ich in Zukunft viel mit Powershell Arbeiten soll.
Nun stehe ich leider vor einer Aufgabe die mir ein wenig Kopfzerbrechen bringt, wie diese zu lösen ist.
Ich soll in dem Ordner "C:\Winodows\ccmcache" Unterordner durchsuchen, nach einer bestimmten Datei. Der Name der Datei ist bis auf die Version in dem Namen immer gleich.
Anhand von dieser Datei sehe ich, welche Software mit welcher Version das ist.
Sollte diese Datei gefunden werden, soll der Hauptordner in dem die Datei im ".\ccmcache" liegt gelöscht werden. Wobei die aktuellste Datei (Softwareversion) wiederum nicht gelöscht werden soll.
Ich soll dort aber nur nach einer Software suchen. die verschiedenen Ordner machen nur die Verschiedenen Versionen.
Ich weis wohl wie ich diese Datei finde und auch wie ich den Hauptordner, in dem die Datei liegt löschen werde.
Mein Problem ist der Vergleich, nach der Version und wie die aktuellste gefunden wird.
Die Damen der Dateien lauten übrigens beispielsweise "Google-Chrome_80.0.3987.122_DE_X86.mst", wobei dann natürlich die 80.0.3987.122 die Version ist.
Hat dort vielleicht einer von euch eine Idee, wie dies zu lösen ist?
Liebe Grüße Sebastian
Ich bin dabei mich im Thema Powershell neu einzuarbeiten, da ich in Zukunft viel mit Powershell Arbeiten soll.
Nun stehe ich leider vor einer Aufgabe die mir ein wenig Kopfzerbrechen bringt, wie diese zu lösen ist.
Ich soll in dem Ordner "C:\Winodows\ccmcache" Unterordner durchsuchen, nach einer bestimmten Datei. Der Name der Datei ist bis auf die Version in dem Namen immer gleich.
Anhand von dieser Datei sehe ich, welche Software mit welcher Version das ist.
Sollte diese Datei gefunden werden, soll der Hauptordner in dem die Datei im ".\ccmcache" liegt gelöscht werden. Wobei die aktuellste Datei (Softwareversion) wiederum nicht gelöscht werden soll.
Ich soll dort aber nur nach einer Software suchen. die verschiedenen Ordner machen nur die Verschiedenen Versionen.
Ich weis wohl wie ich diese Datei finde und auch wie ich den Hauptordner, in dem die Datei liegt löschen werde.
Mein Problem ist der Vergleich, nach der Version und wie die aktuellste gefunden wird.
Die Damen der Dateien lauten übrigens beispielsweise "Google-Chrome_80.0.3987.122_DE_X86.mst", wobei dann natürlich die 80.0.3987.122 die Version ist.
Hat dort vielleicht einer von euch eine Idee, wie dies zu lösen ist?
Liebe Grüße Sebastian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 552219
Url: https://administrator.de/forum/powershell-script-um-veraltete-software-cache-ordner-zu-loeschen-552219.html
Ausgedruckt am: 02.01.2025 um 14:01 Uhr
7 Kommentare
Neuester Kommentar
gci 'c:\windows\ccmcache' -file -Filter 'Google-Chrome_*.mst' -Force -Recurse | sort {$_.Basename.split('_')[1]} -Desc | select -Skip 1 | %{Remove-Item $_.DirectoryName -Recurse -verbose}
Kleiner Verschreiber, ist oben korrigiert.
Zitat von @Deyavue88:
wie bekomme ich es hin, das der die Dateien die er gefunden hat, sortiert und die höhste Version überspringt?
Macht das Skript schon!wie bekomme ich es hin, das der die Dateien die er gefunden hat, sortiert und die höhste Version überspringt?
Aktuell sortiert er, wenn ich es richtig sehe, den Ordnernamen, in dem die Datei liegt.
Nein! Es wird anhand der Versionsnummer sortiert, siehst du ja anhand des Sort-Befehls. Und dahinter folgt dann ein select -skip 1 das die höchste Nummer überspringtwie würde das denn dann aussehen?
Einfach stattdessen $_.Directory.Parent.Fullname nutzen
gci 'c:\windows\ccmcache' -file -Filter 'Google-Chrome_*.mst' -Force -Recurse | sort {$_.Basename.split('_')[1]} -Desc | select -Skip 1 | %{Remove-Item $_.Directory.Parent.Fullname -Recurse -verbose}