- 2 Abschnitte
- 16 Lektionen
- Um den Kurs in deinem Profil zu hinterlegen klicke oben auf Starten
- 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.
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.
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
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.
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"
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.
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
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) }
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.
