
Haben Sie jemals das Bedürfnis gehabt, schnell einen Überblick über die Ordnerstruktur eines Verzeichnisses zu bekommen, ohne dabei von Dateien abgelenkt zu werden? Ob Sie nun regelmäßig mit großen Verzeichnissen arbeiten oder gerade die Verzeichnisstruktur eines neuen Projekts überprüfen möchten – diese Aufgabe kann mit PowerShell effektiv und effizient gelöst werden. In diesem Tutorial lernen Sie, wie Sie ein PowerShell-Skript schreiben, das alle Unterverzeichnisse eines bestimmten Pfades rekursiv auflistet. Wir werden die Cmdlets Get-ChildItem
und Where-Object
verwenden, um unser Ziel zu erreichen.
Das Problem
Stellen Sie sich vor, Sie haben ein großes Projektverzeichnis und möchten wissen, welche Unterordner darin enthalten sind. Sie möchten jedoch nicht, dass dabei alle Dateien angezeigt werden, da dies die Übersichtlichkeit erschwert. Die Lösung besteht in einem PowerShell-Skript, das rekursiv alle Unterverzeichnisse auflistet.
Die Lösung
Verzeichnisse rekursiv auflisten
Wir beginnen mit dem Cmdlet Get-ChildItem
, das in PowerShell verwendet wird, um den Inhalt eines Verzeichnisses abzurufen. Um nur Verzeichnisse rekursiv aufzulisten, können wir den folgenden Befehl verwenden:
# Der Basisbefehl zur Verzeichnisabfrage
Get-ChildItem -Path "C:\Ihr\Verzeichnis\Pfad" -Directory -Recurse
Code-Sprache: PowerShell (powershell)
-Path
: Gibt den Startpfad an, von dem aus die Suche beginnt.-Directory
: Filtert nur die Verzeichnisse.-Recurse
: Durchsucht alle Unterverzeichnisse rekursiv.
Herausfiltern der Verzeichnisse mit Where-Object
Manchmal möchten wir die Ergebnisse weiter filtern oder anpassen. Hier kommt Where-Object
ins Spiel, das es uns ermöglicht, spezifische Bedingungen zu setzen:
# Verzeichnisse rekursiv auflisten und mit Where-Object filtern
Get-ChildItem -Path "C:\Ihr\Verzeichnis\Pfad" -Recurse | Where-Object { $_.PSIsContainer }
Code-Sprache: PowerShell (powershell)
Where-Object { $_.PSIsContainer }
: Filtert die Ergebnisse, sodass nur Containerobjekte (Verzeichnisse) angezeigt werden.
Zeige nur die Top-Level-Verzeichnisse
Falls Sie nur die Top-Level-Verzeichnisse ohne die rekursive Option sehen möchten:
# Zeigt nur Verzeichnisse im angegebenen Pfad, keine Rekursion
Get-ChildItem -Path "C:\Ihr\Verzeichnis\Pfad" -Directory
Code-Sprache: PowerShell (powershell)
Module verwenden
Falls Sie zusätzliche PowerShell-Module verwenden, könnten diese Ihnen helfen, erweiterte Funktionalitäten zu nutzen. In diesem Beispiel benötigen wir jedoch keine speziellen Module, da die gebrauchten Cmdlets standardmäßig verfügbar sind.
Weiterführende Links
- Microsoft Docs – Get-ChildItem
- Microsoft Docs – Where-Object
- Microsoft PowerShell Gallery (für zusätzliche Module)
- PowerShell Community-Hub
Durch das Verständnis und die Anwendung von Get-ChildItem
und Where-Object
können Sie die Verzeichnisstruktur effektiver untersuchen und anpassen, wie Informationen in Ihren PowerShell-Skripten dargestellt werden. Viel Spaß beim Entdecken Ihrer Verzeichnisse!