👉 Jetzt bei Amazon nach deinem nächsten Gaming PCs stöbern (Affiliate-Link – ich erhalte eine kleine Provision, für dich bleibt der Preis gleich)

 

Stell dir vor, du arbeitest an einem Projekt, das mehrere Hundert Ordner in einem Verzeichnis beinhaltet. Nicht alle Ordner sind für deine derzeitige Aufgabe relevant, und du möchtest daher nur die Ordner angezeigt bekommen, die einem bestimmten Kriterium entsprechen. Möglicherweise suchst du nur nach Ordnern, die in den letzten sieben Tagen geändert wurden, oder nach Ordnern, deren Name mit einem speziellen Präfix beginnt. In diesem Tutorial lernst du, wie du mit PowerShell und Where-Object gezielt Ordner in einem Verzeichnis filtern kannst. So kannst du effizienter arbeiten und fokussierst dich nur auf die wichtigen Daten.

Vorbereitung

Um mit dem Skripting in PowerShell zu beginnen, stelle sicher, dass dein PowerShell auf dem neuesten Stand ist. Du kannst aktualisieren oder installieren, indem du das entsprechende Installationspaket für dein Betriebssystem herunterlädst.

Grundgerüst des Skripts

Beginnen wir mit einem einfachen Skript, um alle Ordner in einem Verzeichnis aufzulisten. In diesem Beispiel verwenden wir das Verzeichnis C:\Projekte.

# Definiere das Zielverzeichnis
$verzeichnisPfad = "C:\Projekte"

# Hole alle Ordner im angegebenen Pfad
$ordnerListe = Get-ChildItem -Path $verzeichnisPfad -Directory

# Ausgabe der ungefilterten Ordnerliste
$ordnerListe | ForEach-Object { $_.Name }
Code-Sprache: PowerShell (powershell)

Ordner filtern nach einem bestimmten Kriterium

Jetzt wollen wir Ordner filtern, die ein bestimmtes Merkmal aufweisen. Angenommen, du möchtest nur die Ordner auflisten, die in den letzten sieben Tagen geändert wurden.

# Heutiges Datum
$heute = Get-Date

# Filtere Ordner, die in den letzten 7 Tagen verändert wurden
$gefilterteOrdner = $ordnerListe | Where-Object {
    ($heute - $_.LastWriteTime).Days -le 7
}

# Ausgabe der gefilterten Ordnerliste
$gefilterteOrdner | ForEach-Object { $_.Name }
Code-Sprache: PowerShell (powershell)

Erklärung

  • Get-ChildItem -Directory: Dies listet alle Ordner im angegebenen Pfad auf.
  • Where-Object {...}: Hiermit kannst du Bedingungen festlegen. In diesem Fall prüfen wir, ob die Anzahl der Tage seit der letzten Änderung weniger als oder gleich sieben ist.

Filtern nach Namenspräfix

Falls es wichtig ist, Ordner basierend auf einem Präfix zu filtern, kannst du das folgende Skript nutzen:

# Das gewünschte Präfix
$praefix = "Projekt_"

# Filtere Ordner, deren Name mit dem festgelegten Präfix beginnt
$gefilterteOrdner = $ordnerListe | Where-Object {
    $_.Name -like "$praefix*"
}

# Ausgabe der gefilterten Ordnerliste
$gefilterteOrdner | ForEach-Object { $_.Name }Code-Sprache: PHP (php)

Erklärung

Mit -like kannst du Wildcards verwenden (‚*‚ steht für beliebige Zeichen) und so spezifische Suchmuster festlegen.

Alternative Ansätze

Du kannst auch komplexere Filterkriterien kombinieren, um eine noch gezieltere Auswahl zu treffen. Zum Beispiel könnten wir nach Ordnern suchen, die sowohl ein bestimmtes Namenspräfix haben als auch kürzlich geändert wurden.

$gefilterteOrdner = $ordnerListe | Where-Object {
    $_.Name -like "$praefix*" -and ($heute - $_.LastWriteTime).Days -le 7
}

$gefilterteOrdner | ForEach-Object { $_.Name }Code-Sprache: PHP (php)

Weiterführende Links

Hier sind einige nützliche Ressourcen, die dir helfen können, dein Wissen über PowerShell zu vertiefen:

Durch den Einsatz der oben gezeigten PowerShell-Skripte kannst du deine Arbeit mit Verzeichnissen verbessern und die für dich relevanten Daten effizient extrahieren. Dank der Flexibilität von PowerShell sind die Optionen nahezu endlos. Viel Erfolg beim Experimentieren!