PowerShell-Schleife durch Dateien und Ordner
-
Durchlaufen Sie Dateien und Ordner mit PowerShell
Get-ChildItem
-
Durchlaufen Sie Dateien und Ordner mit der PowerShell
Get-ChildItem
undForEach
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.
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 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