- 2 Sections
- 16 Lessons
- unbegrenzt
- Grundlagen & Einstieg9
- Fortgeschritten8
Dateien und Verzeichnisse
PowerShell behandelt das Dateisystem wie eine eigene Datenquelle.
Das bedeutet: du kannst dich darin bewegen, Dateien anzeigen, filtern, verändern und sogar Inhalte automatisiert verarbeiten – alles mit denselben Prinzipien, die du bereits aus vorherigen Lektionen kennst.
1. Navigation im Dateisystem
Die grundlegenden Befehle zum Navigieren erinnern an CMD oder Linux, heißen intern aber anders.
Mit Set-Location wechselst du das Verzeichnis, Get-Location zeigt dir, wo du gerade bist, und Get-ChildItem listet Inhalte auf.
Set-Location C:\Users
Get-Location
Get-ChildItem
Du kannst Tab-Vervollständigung nutzen – PowerShell ergänzt automatisch Pfade und Cmdlets, sobald du ein paar Buchstaben tippst.
2. Dateien und Ordner anzeigen
Get-ChildItem zeigt alle Dateien und Ordner im angegebenen Pfad.
Mit Parametern kannst du steuern, was genau angezeigt werden soll:
Get-ChildItem -Path C:\Users -Recurse # durchsucht auch Unterordner
Get-ChildItem -Path C:\Users -File # nur Dateien
Get-ChildItem -Path C:\Users -Directory # nur Ordner
Get-ChildItem -Force # zeigt auch versteckte Dateien
3. Dateien erstellen, kopieren, verschieben und löschen
Dateien und Ordner kannst du mit wenigen Befehlen verwalten:
New-Item -Path "C:\Test\beispiel.txt" -ItemType File
New-Item -Path "C:\Test\Projekte" -ItemType Directory
Copy-Item -Path "C:\Test\beispiel.txt" -Destination "C:\Backup"
Move-Item -Path "C:\Backup\beispiel.txt" -Destination "C:\Archiv"
Remove-Item -Path "C:\Archiv\beispiel.txt"
Wenn du eine Sicherheitsabfrage möchtest, füge -Confirm hinzu.
4. Inhalte von Dateien lesen und schreiben
Mit Get-Content liest du Textdateien. Jede Zeile wird dabei als eigenes Element in einem Array behandelt, das du weiterverarbeiten kannst.
Get-Content -Path "C:\Test\log.txt"
(Get-Content log.txt)[0] # erste Zeile
(Get-Content log.txt)[-1] # letzte Zeile
Zum Schreiben oder Anhängen nutzt du Set-Content und Add-Content:
Set-Content -Path "C:\Test\log.txt" -Value "Neuer Text"
Add-Content -Path "C:\Test\log.txt" -Value "Weitere Zeile"
5. Dateien suchen
Mit Get-ChildItem und Select-String kannst du Dateien gezielt finden oder durchsuchen:
Get-ChildItem -Path C:\Logs -Recurse -Filter *.txt
Select-String -Path C:\Logs\*.txt -Pattern "Fehler"
Select-String funktioniert ähnlich wie grep und durchsucht Textdateien nach einem Muster.
6. Dateiinformationen
Dateien sind Objekte und haben Eigenschaften wie Name, Größe oder Änderungsdatum.
Diese kannst du direkt auslesen:
$file = Get-Item "C:\Test\beispiel.txt"
$file.Name
$file.Length
$file.LastWriteTime
Wenn du viele Dateien vergleichen willst:
Get-ChildItem | Select-Object Name, Length, LastWriteTime | Sort-Object Length -Descending
7. Filtern von Dateien
Mit Where-Object kannst du gezielt Dateien herausfiltern, etwa nach Größe oder Alter:
Get-ChildItem -File | Where-Object { $_.Length -gt 1MB }
Get-ChildItem -File | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) }
8. Ergebnisse exportieren
Wenn du deine Dateiinformationen beispielsweise in Excel weiterverarbeiten willst, kannst du sie als CSV exportieren:
Get-ChildItem -Path C:\Logs -Recurse |
Select-Object FullName, Length, LastWriteTime |
Export-Csv -Path C:\Temp\Dateiliste.csv -NoTypeInformation
Damit entsteht eine übersichtliche Tabelle aller gefundenen Dateien.
Beispiel: Automatisches Backup
Ein typisches Anwendungsbeispiel aus der Praxis ist ein einfaches Backup-Skript, das täglich alle .log-Dateien sichert:
$Quelle = "C:\Logs"
$Ziel = "C:\Backup\" + (Get-Date -Format "yyyy-MM-dd")
New-Item -ItemType Directory -Path $Ziel -Force
Get-ChildItem -Path $Quelle -Recurse -Filter *.log |
Copy-Item -Destination $Ziel -Force
Bei regelmäßigem Aufruf (z. B. über die Aufgabenplanung) entsteht so ein automatisches, datumsbasiertes Sicherungsverzeichnis.
