Tag Archives for " power shell "

Power Shell Skript zum Löschen von Dateien die älter als N Tage sind

PowerShell-Skripte sind aus dem Bereich der Serverwartung nicht mehr wegzudenken. Sie haben sich als unverzichtbares Werkzeug etabliert, um tägliche, wöchentliche oder monatliche Wartungsarbeiten effizient und automatisiert durchzuführen. Einmal geschrieben, übernehmen sie im Alltag viele repetitive Aufgaben und sparen damit Zeit und Ressourcen. Die Vielseitigkeit von PowerShell ermöglicht es, nahezu jede denkbare administrative Aufgabe zu automatisieren.

Ein konkretes Beispiel für die Anwendung von PowerShell in der Serverwartung ist das folgende Skript. Dieses Skript hat den Zweck, alle Dateien auf Laufwerk R zu löschen, die älter als 30 Tage sind. Es ist wichtig zu beachten, dass das Skript standardmäßig im Testmodus (whatif-Modus) ausgeführt wird, um versehentliche Löschvorgänge zu verhindern. Das `-whatif`-Flag ermöglicht einen Testlauf, bei dem angezeigt wird, was gelöscht werden würde, ohne tatsächlich Dateien zu entfernen.

$DatumVor30Tagen = (Get-Date).AddDays(-30)
$Source = „r:\“
start-transcript „$Source $(get-date -format yyMMdd).txt“
get-childitem „$Source “ -recurse | where {$_.lastwritetime -lt $DatumVor30Tagen -and -not $_.psiscontainer} |% {remove-item $_.fullname -force -verbose -whatif}

In diesem Skript wird zunächst das Datum vor 30 Tagen berechnet und in der Variable `$DatumVor30Tagen` gespeichert. Das Quellverzeichnis, in diesem Fall Laufwerk R, wird in der Variable `$Source` definiert. Das `start-transcript`-Kommando wird verwendet, um den Löschvorgang in eine Textdatei zu protokollieren. Der eigentliche Löschvorgang wird durch die `get-childitem`-Cmdlet durchgeführt, das alle Dateien im Quellverzeichnis und seinen Unterverzeichnissen durchsucht. Das `where`-Cmdlet filtert die Dateien, die älter als 30 Tage sind und keine Verzeichnisse sind. Schließlich wird das `remove-item`-Cmdlet verwendet, um die ausgewählten Dateien zu löschen.

Die Protokolldatei wird im Quellverzeichnis mit dem Format Tagesdatum (JahrMonatTag) .txt abgelegt. Dieses Protokoll bietet Transparenz über die durchgeführten Aktionen und ermöglicht es, den Löschvorgang im Nachhinein zu überprüfen.

Insgesamt zeigt dieses Beispiel die Flexibilität und Leistungsfähigkeit von PowerShell-Skripten in der Serverwartung. Die Automatisierung von wiederkehrenden Aufgaben führt zu einer effizienten Ressourcennutzung und erleichtert die Verwaltung von Serverumgebungen.

Power Shell Skript zum Löschen bestimmten Ordnern mit Inhalt die älter als N Tage sind

Ein leistungsfähiges PowerShell-Skript kann die effiziente Automatisierung von Aufgaben in der Serverwartung gewährleisten. Hier präsentiere ich ein einfaches Skript, das darauf abzielt, Ordner und deren Inhalte auf einem bestimmten Laufwerk zu löschen. Das Skript zeichnet sich durch die gezielte Auswahl von Ordnern aus, die älter als eine bestimmte Anzahl von Tagen sind und einen spezifischen Namensanfang aufweisen.

dir "r:\" | ?{$_.lastwritetime -lt ((Get-Date).AddDays(-30)) -and $_.PSIsContainer -and $_.Name -like 'IMG*'} | %{Remove-Item $_.FullName -force -recurse}

Hier sind die Schlüsselaspekte des Skripts:

1. Durchsuchen des Laufwerks:
Das Skript verwendet das `dir`-Cmdlet, um das angegebene Laufwerk (hier als Beispiel R:\) zu durchsuchen.

2. Filtern nach bestimmten Kriterien:
Das `?{$_.lastwritetime -lt ((Get-Date).AddDays(-30)) -and $_.PSIsContainer -and $_.Name -like ‚IMG*‘}`-Teil des Skripts führt einen Filterprozess durch. Es wählt nur Ordner aus, die älter als 30 Tage sind (`-lt` steht für „kleiner als“), tatsächlich Ordner sind (`$_PSIsContainer`), und deren Name mit ‚IMG*‘ beginnt (`-like` wird mit einer Wildcard verwendet).

3. Löschen der ausgewählten Ordner:
Das `|%{Remove-Item $_.FullName -force -recurse}`-Teil des Skripts verwendet das `Remove-Item`-Cmdlet, um die ausgewählten Ordner und deren Inhalte zu löschen. Die Optionen `-force` und `-recurse` ermöglichen das Löschen ohne Rückfrage und das rekursive Löschen aller Unterordner und Dateien.

Es ist wichtig zu beachten, dass dieses Skript im Hintergrund arbeitet, ohne Abfrage und ohne die Erstellung einer Log-Datei. Daher sollte es mit Vorsicht verwendet werden, um unerwünschte Datenverluste zu vermeiden. Bei Anpassungen des Skripts sollte darauf geachtet werden, die gewünschten Ordner und Dateien genau zu identifizieren und sicherzustellen, dass die Auswahl den beabsichtigten Löschvorgang widerspiegelt.