Einer der nützlichsten Befehle in PowerShell ist „Get-ChildItem„, der eine Liste von Dateien und Ordnern eines Verzeichnisses ausgibt. In diesem Artikel werden wir uns genauer ansehen, wie man „Get-ChildItem“ verwendet und was man alles damit machen kann.

Syntax von „Get-ChildItem“

Die grundlegende Syntax von „Get-ChildItem“ lautet:

Get-ChildItem [-Path] <String[]> [-Filter <String>] [-Include <String[]>] [-Exclude <String[]>] [-Recurse] [-Depth <UInt32>] [-Force] [-Name] [-Attributes <FlagsExpression>] [-Directory] [-File] [-Hidden] [-ReadOnly] [-System] [<CommonParameters>]

Hier sind einige der wichtigsten Parameter, die Sie verwenden können:

Path: Der Pfad, von dem Sie die Dateien und Ordner abrufen möchten.
Filter: Ein Filter, der auf den Dateinamen angewendet wird, um eine Teilmenge der Dateien zurückzugeben.
Include: Nur Dateien oder Ordner, die eine der angegebenen Dateierweiterungen oder Ordner enthalten, werden zurückgegeben. –Exclude: Dateien oder Ordner, die eine der angegebenen Dateierweiterungen oder Ordner enthalten, werden ausgeschlossen.
Recurse: Durchsucht den angegebenen Pfad und alle darunterliegenden Ordner.
Depth: Gibt die maximale Anzahl von Unterordnern an, die durchsucht werden sollen.
Force: Zeigt auch Dateien und Ordner an, auf die der Benutzer normalerweise keinen Zugriff hat.
Name: Gibt nur den Dateinamen und nicht den vollständigen Pfad zurück.
Attributes: Filtert Dateien nach Attributen wie „Archive„, „Read-only“ oder „Hidden„.
Directory: Gibt nur Ordner zurück.
File: Gibt nur Dateien zurück.
Hidden: Gibt nur versteckte Dateien oder Ordner zurück.
ReadOnly: Gibt nur schreibgeschützte Dateien oder Ordner zurück.
System: Gibt nur Systemdateien oder Ordner zurück.

Get-ChildItem Beispiele

Nun schauen wir uns einige Beispiele an, wie Sie „Get-ChildItem“ in der Praxis verwenden können.

Beispiel 1: Dateien und Ordner im aktuellen Verzeichnis anzeigen

Um alle Dateien und Ordner im aktuellen Verzeichnis anzuzeigen, können Sie einfach den Befehl „Get-ChildItem“ ohne Argumente verwenden:

Get-ChildItem

Dies gibt alle Dateien und Ordner im aktuellen Verzeichnis zurück.

Beispiel 2: Dateien mit einer bestimmten Erweiterung anzeigen

Um nur Dateien mit einer bestimmten Erweiterung anzuzeigen, können Sie den Parameter-Filter“ verwenden:

Get-ChildItem -Filter *.txt

Dies gibt alle Dateien mit der Erweiterung „.txt“ im aktuellen Verzeichnis zurück.

Beispiel 3: Nur Ordner anzeigen

Um nur Ordner anzuzeigen, können Sie den Parameter „-Directory“ verwenden:

Get-ChildItem -Directory

Dies gibt alle Ordner im aktuellen Verzeichnis zurück.

Beispiel 4: Dateien in einem bestimmten Verzeichnis anzeigen

Um alle Dateien und Ordner in einem bestimmten Verzeichnis anzuzeigen, können Sie den Parameter „-Path“ verwenden:

Get-ChildItem -Path C:\Users\Username\Documents

Dies gibt alle Dateien und Ordner im Verzeichnis „Dokumente“ des Benutzers „Username“ auf Laufwerk C: zurück.

Beispiel 5: Versteckte Dateien anzeigen

Um nur versteckte Dateien anzuzeigen, können Sie den Parameter „-Hidden“ verwenden:

Get-ChildItem -Hidden

Dies gibt alle versteckten Dateien und Ordner im aktuellen Verzeichnis zurück.

Beispiel 6: Dateien mit Attributen anzeigen

Um nur Dateien mit bestimmten Attributen wie „Archive„, „Read-only“ oder „Hidden“ anzuzeigen, können Sie den Parameter „-Attributes“ verwenden:

Get-ChildItem -Attributes ReadOnly, Hidden

Dies gibt alle schreibgeschützten und versteckten Dateien im aktuellen Verzeichnis zurück.

Beispiel 7: Dateien in Unterordnern durchsuchen

Um alle Dateien und Ordner in einem bestimmten Verzeichnis und allen darunterliegenden Unterordnern anzuzeigen, können Sie den Parameter „-Recurse“ verwenden:

Get-ChildItem -Path C:\Users\Username\Documents -Recurse

Dies gibt alle Dateien und Ordner im Verzeichnis „Documents“ des Benutzers „Username“ auf Laufwerk C: und allen darunterliegenden Unterordnern zurück.

Get-ChildItem Skripte

Hier nachfolgend finden Sie ein PowerShell-Skript, das den Inhalt aller .txt-Dateien in einem Verzeichnis und allen untergeordneten Verzeichnissen auflistet:

Get-ChildItem -Path "C:\Ordner\Verzeichnis" -Recurse -Include *.txt | ForEach-Object {Get-Content $_.FullName} 

Dieser Befehl sucht in dem Verzeichnis „C:\Ordner\Verzeichnis“ und allen untergeordneten Verzeichnissen nach .txt-Dateien und gibt den Inhalt der Dateien aus. Der Parameter „-Include“ sorgt dafür, dass nur .txt-Dateien berücksichtigt werden. Der Parameter „-Recurse“ sorgt dafür, dass alle untergeordneten Verzeichnisse durchsucht werden.

Die Ausgabe erfolgt über den Befehl „Get-Content„, der den Inhalt jeder gefundenen .txt-Datei ausgibt.

Rekursives Löschen von Dateien per Get-ChildItem

Hier ist ein Beispiel-Skript, das die .txt-Dateien im Verzeichnis „C:\Ordner\Verzeichnis“ und allen untergeordneten Verzeichnissen löscht:

Get-ChildItem -Path "C:\Ordner\Verzeichnis" -Recurse -Include *.txt | Remove-Item -Force

Dieser Befehl sucht nach allen .txt-Dateien im Verzeichnis „C:\Ordner\Verzeichnis“ und allen untergeordneten Verzeichnissen. Der Parameter „-Include“ sorgt dafür, dass nur .txt-Dateien berücksichtigt werden. Der Parameter „-Recurse“ sorgt dafür, dass alle untergeordneten Verzeichnisse durchsucht werden.

Der Befehl „Remove-Item“ wird verwendet, um die gefundenen .txt-Dateien zu löschen. Der Parameter „-Force“ sorgt dafür, dass die Dateien ohne Rückfrage gelöscht werden. Beachten Sie, dass das Löschen von Dateien eine irreversible Aktion ist und dazu führen kann, dass wichtige Dateien verloren gehen. Es ist daher ratsam, eine Sicherungskopie Ihrer Dateien zu erstellen, bevor Sie diesen Befehl ausführen.

Rekursives Löschen ohne Rückfrage per Get-ChildItem

Hier ist das Beispiel-Skript, das die .txt-Dateien im Verzeichnis „C:\Ordner\Verzeichnis“ und allen untergeordneten Verzeichnissen ohne Rückfrage löscht:

Get-ChildItem -Path "C:\Ordner\Verzeichnis" -Recurse -Include *.txt | Remove-Item -Force -Confirm:$false

Dieser Befehl sucht nach allen .txt-Dateien im Verzeichnis „C:\Ordner\Verzeichnis“ und allen untergeordneten Verzeichnissen. Der Parameter „-Include“ sorgt dafür, dass nur .txt-Dateien berücksichtigt werden. Der Parameter „-Recurse“ sorgt dafür, dass alle untergeordneten Verzeichnisse durchsucht werden.

Der Befehl „Remove-Item“ wird erneut dafür verwendet, um die gefundenen .txt-Dateien zu löschen. Der Parameter „-Force“ sorgt wieder dafür, dass die Dateien ohne Rückfrage gelöscht werden. Der Parameter „-Confirm:$falsedeaktiviert die Abfrage, ob Sie das Löschen der Datei bestätigen möchten.

Beachten Sie bitte auch hier, dass das Löschen von Dateien ohne Rückfrage eine irreversible Aktion ist und dazu führen kann, dass wichtige Dateien verloren gehen. Stellen Sie daher sicher, dass Sie über eine Datensicherung (Backup) Ihrer Dateien verfügen, bevor Sie diesen Befehl ausführen.

Ordnergröße berechnen mit Get-ChildItem

Nachfolgend ein PowerShell Skript, mit dem die Größe eines Ordners berechnet wird und das Ergebnis in MB oder GB zurückgegen wird.

$folderPath = "C:\MyFolder"
$size = Get-ChildItem -Path $folderPath -Recurse | Measure-Object -Property Length -Sum
$sizeInMB = $size.Sum / 1MB
$sizeInGB = $size.Sum / 1GB

if ($sizeInGB -ge 1) {
    Write-Output "Folder size: $($sizeInGB.ToString("#.##")) GB"
}
else {
    Write-Output "Folder size: $($sizeInMB.ToString("#.##")) MB"
}

Anzahl der Dateien in einem Ordner zählen mit Get-ChildItem

Dieses Skript zählt die Anzahl der Dateien in einem Ordner.

$folderPath = "C:\MyFolder"
$fileCount = (Get-ChildItem -Path $folderPath -File).Count
Write-Output "Number of files: $fileCount"

Alle Dateien in einem Ordner umbenennen:

Dieses Skript benennt alle Dateien in einem Ordner um, indem es den Namen der Datei durch ein Präfix und eine fortlaufende Nummer ersetzt.

$folderPath = "C:\MyFolder"
$files = Get-ChildItem -Path $folderPath -File

$i = 1
foreach ($file in $files) {
    $newName = "Prefix$i$file.Extension"
    $i++
    Rename-Item $file.FullName -NewName $newName
}

Alle leeren Ordner in einem Verzeichnisbaum löschen:

Dieses Skript löscht alle leeren Ordner in einem Verzeichnisbaum.

$folderPath = "C:\MyFolder"
Get-ChildItem -Path $folderPath -Directory -Recurse | Where-Object { $_.GetFileSystemInfos().Count -eq 0 } | Remove-Item

Ausgabemöglichkeiten von Get-ChildItem

Der PowerShell Befehl beherrscht natürlich auch verschiedene Ausgabemöglichkeiten. Hier sind einige der Ausgabemöglichkeiten, die durch den PowerShell-Befehl „Get-ChildItem“ unterstützt werden und wie sie angewendet werden.

  1. Ausgabe auf dem Bildschirm (Standardausgabe): Die Standardausgabe zeigt die Ergebnisse auf dem Bildschirm an. Wenn der Befehl ohne weitere Optionen ausgeführt wird, werden alle relevanten Eigenschaften der gefundenen Dateien und Verzeichnisse aufgelistet.
  2. Ausgabe in eine Datei: Sie können die Ausgabe des „Get-ChildItem“ Befehls auch in eine Datei umleiten, indem Sie den „>„-Operator verwenden. Zum Beispiel:
    Get-ChildItem C:\Windows\System32 > C:\windows-faq\ausgabe.txt
    Dieser Befehl sucht alle Elemente im Verzeichnis „C:\Windows\System32“ und leitet die Ergebnisse in die Datei „C:\windows-faq\ausgabe.txt“ um.
  3. Ausgabe in eine Tabelle: Sie können auch eine tabellarische Ansicht der Ergebnisse erhalten, indem Sie den Parameter „-Format Table“ verwenden. Zum Beispiel:
    Get-ChildItem -Path „C:\“ -Recurse -Force -ErrorAction SilentlyContinue | Format-Table -AutoSize
    Dieser Befehl sucht rekursiv alle Elemente im Stammverzeichnis „C:“ und zeigt die Ergebnisse in einer Tabelle an, die automatisch auf die Größe der Daten angepasst wird. Die Parameter „-Force“ und „-ErrorAction SilentlyContinue“ sind hier optional und dienen dazu, den Zugriff auf geschützte Dateien und Ordner zu erzwingen und Fehlermeldungen zu unterdrücken.

Fazit

Get-ChildItem“ ist ein leistungsstarker Befehl in PowerShell, mit dem Sie Dateien und Ordner in einem Verzeichnis und allen darunterliegenden Unterordnern anzeigen und filtern können. Durch die Verwendung der verschiedenen Parameter können Sie die Ergebnisse auf bestimmte Dateierweiterungen, Attribute oder Verzeichnisse einschränken. „Get-ChildItem“ ist ein wichtiger Befehl für jeden PowerShell-Nutzer und kann Ihnen dabei helfen, effizienter mit Dateien und Ordnern umzugehen.

– PowerShell New-Item
– PowerShell Get-Content
– Powershell-Befehl „foreach“