PowerShell-Schleife durch Dateien und Ordner

John Wachira 20 Juni 2023
  1. Durchlaufen Sie Dateien und Ordner mit PowerShell Get-ChildItem
  2. Durchlaufen Sie Dateien und Ordner mit der PowerShell Get-ChildItem und ForEach
PowerShell-Schleife durch Dateien und Ordner

Dieser Artikel veranschaulicht, wie wir ein PowerShell-Skript schreiben können, um Dateien und Ordner zu durchlaufen. Wir werden die Anweisungen Get-ChildItem und ForEach verwenden, um verschiedene PowerShell-Skripte zu erstellen. Lassen Sie uns gleich einsteigen.

Durchlaufen Sie Dateien und Ordner mit PowerShell Get-ChildItem

Wir verwenden das PowerShell-Cmdlet Get-ChildItem, um eine Liste von Dateien und Ordnern an einem bestimmten Ort anzuzeigen. Mit dem Attribut -path geben wir den Pfad zum gewünschten Verzeichnis an.

Das Get-ChildItem verwendet ebenfalls gci als Alias.

Wenn wir beispielsweise eine Liste der Dateien und Ordner auf unserem Laufwerk C:/ erhalten möchten, können wir Folgendes ausführen:

Get-ChildItem -Path 'C:\'

Der obige Befehl zeigt nur die Dateien und Ordner im Stammverzeichnis unseres Laufwerks an. Um den Inhalt der untergeordneten Verzeichnisse (Unterordner) zu erhalten, können wir den Parameter -Recurse hinzufügen, wie unten dargestellt.

Get-ChildItem -Path 'C:\' -Recurse

PowerShell zeigt den Inhalt aller Unterordner in unserem Laufwerk an.

Durchlaufen Sie Dateien und Ordner mit der PowerShell Get-ChildItem und ForEach

Wir verwenden die PowerShell-Schleife ForEach, um als jedes Objekt in einer Sammlung von Objekten zu fungieren. Hier ist die allgemeine Struktur bei Verwendung des Get-ChildItem-Cmdlets und der ForEach-Schleife:

Get-ChildItem Path "C:\" |

Foreach-Object {

#Some action with $_.FullName

}

Sehen wir uns einige Beispielskripts an, die die beiden PowerShell-Dienstprogramme verwenden.

Angenommen, wir möchten alle .csv-Dateien in unserem C:\Users\pc-Ordner löschen. Wie gehen wir vor?

Wie unten dargestellt, können wir das Cmdlet Get-ChildItem und die ForEach-Schleife verwenden, um diese Aufgabe auszuführen.

Get-ChildItem Path "C:\Users\pc" -Recurse -Filter *.csv
|
Foreach-Object {
Remove-Item $_.FullName -WhatIF
}

Das obige Skript verwendet das PowerShell-Cmdlet Get-ChildItem mit dem Parameter -Recurse, um alle Dateien in unserem Ordner C:\Users\pc abzurufen. Wir verwenden dann den Parameter Filter, um Dateien nur mit der Dateierweiterung .csv abzurufen.

Wir leiten die Ergebnisse an die ForEach-Schleife weiter, wo die Dateien entfernt werden. Da wir unsere Dateien aber nicht löschen wollen, haben wir den Parameter -WhatIf hinzugefügt. Unten ist die Ausgabe des obigen Skripts.

ForEach-Schleife zum Löschen von CSV-Dateien

Unser Skript hat sechs Dateien mit der Dateierweiterung .csv gefunden. Die Dateien wurden noch nicht gelöscht, da wir den Parameter -WhatIf verwendet haben.

Wir können auch ein Skript erstellen, das Dateien löscht, die älter als ein bestimmtes Datum sind. Dies kann nützlich sein, wenn Sie temporäre Protokolldateien von unserem System bereinigen.

Nachfolgend finden Sie ein Beispielskript, das Dateien in unserem Verzeichnis pc löscht, die älter als 7 Tage sind.

Get-ChildItem C:\Users\pc\ -Recurse
|
Where-Object { $_.CreationTime -lt ($(Get-Date).AddDays(-7))} |
ForEach-Object { remove-Item $_.FullName whatif }

Dieses Get-ChildItem mit dem Recurse-Parameter holt alle Dateien in unserem pc-Ordner und fügt sie in unsere ForEach-Schleife ein. Die Schleife löscht alle Dateien, die älter als sieben Tage sind.

Da wir die Dateien in unserem Ordner nicht abschaffen wollen, haben wir den Parameter -WhatIf hinzugefügt.

Zusammenfassend können wir die PowerShell Get-ChildItem und die ForEach-Schleife verwenden, um Skripte zu erstellen, die Dateien und Ordner durchlaufen.

Die ForEach-Schleife führt eine bestimmte Aktion für alle Dateien aus, die vom Get-ChildItem-Cmdlet heruntergeleitet werden. Es gibt verschiedene Möglichkeiten, wie wir die beiden PowerShell-Dienstprogramme verwenden können.

John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

Verwandter Artikel - PowerShell File