Join-Path
Das Cmdlet Join-Path kombiniert mehrere Pfadsegmente zu einem gültigen Dateisystempfad.
Es wird verwendet, um:
-
Pfade plattformunabhängig zusammenzusetzen
-
manuelles Hantieren mit Trennzeichen (
\oder/) zu vermeiden -
Fehler durch doppelte oder fehlende Separatoren zu verhindern
🔧 Syntax
Join-Path [-Path] <String> [-ChildPath] <String> [[-AdditionalChildPath] <String[]>] [<CommonParameters>]
-Path
-
Typ:
String -
Pflicht: Ja
-
Basispfad (z. B. Verzeichnis)
-ChildPath
-
Typ:
String -
Pflicht: Ja
-
Pfadsegment, das an
-Pathangehängt wird
Join-Path -Path "C:\Temp" -ChildPath "Datei.txt"
Verfügbar ab: PowerShell 6+
-AdditionalChildPath
-
Typ:
String[] -
Pflicht: Nein
-
Weitere Pfadsegmente, die nacheinander angehängt werden
Join-Path -Path "C:\Temp" -ChildPath "Logs" -AdditionalChildPath "2026","April"
⚠️ Hinweise zur Verwendung
-
Trennzeichen werden automatisch korrekt gesetzt (kein manuelles
\nötig) -
Funktioniert providerübergreifend (z. B. Registry, Zertifikate)
-
Mehrere Segmente werden sauber zusammengeführt
-
Bestehende Trennzeichen im Input werden berücksichtigt (keine doppelten
\\)
📊 Verhalten
| Eigenschaft | Beschreibung |
|---|---|
| Plattformabhängigkeit | Berücksichtigt das jeweilige Dateisystem |
| Rückgabewert | String (zusammengesetzter Pfad) |
| Validierung | Keine Existenzprüfung des Pfades |
| Separator-Handling | Automatisch korrekt |
🧪 Beispiele
Einfaches Zusammenfügen
Join-Path -Path "C:\Temp" -ChildPath "Datei.txt"
Ergebnis: C:\Temp\Datei.txt
Mehrere Segmente
Join-Path -Path "C:\Temp" -ChildPath "Logs" -AdditionalChildPath "2026","April"
Ergebnis: C:\Temp\Logs\2026\April
Mit Variablen
$base = "C:\Temp"
$file = "report.txt"
Join-Path -Path $base -ChildPath $file
Ergebnis: C:\Temp\report.txt
Provider-unabhängig (z. B. Registry)
Join-Path -Path "HKCU:\Software" -ChildPath "Microsoft"
⚙️ Typische Anwendungsfälle
-
Dynamische Dateipfade erstellen
-
Arbeiten mit temporären Verzeichnissen
-
Plattformunabhängige Skripte schreiben
-
Zusammenbau von Registry-Pfaden
❗ Alternativen / Ergänzungen
String-Konkatenation
# ❌ Fehleranfällig
"C:\Temp\" + "Datei.txt"
-
Fehleranfällig bei fehlenden oder doppelten Trennzeichen
-
Nicht plattformunabhängig
[System.IO.Path]::Combine()
[System.IO.Path]::Combine("C:\Temp", "Datei.txt")
Unterschiede:
-
.NET-Methode, nicht PowerShell-spezifisch
-
Keine Provider-Unterstützung (nur Dateisystem)
-
Kein Support für
CommonParameters
🚫 Typische Fehler
1. Manuelles Zusammensetzen
# ❌ Schlecht
"C:\Temp\" + "\" + "Datei.txt"
➡️ Führt schnell zu unsauberen Pfaden
2. Falsche Erwartung: Existenzprüfung
Join-Path -Path "C:\Temp" -ChildPath "ExistiertNicht.txt"
➡️ Erstellt keine Datei und prüft auch nicht, ob sie existiert
3. Vergessen, dass es nur Strings liefert
# ❌ Kein Dateiobjekt!
$path = Join-Path -Path "C:\Temp" -ChildPath "Datei.txt"
➡️ Nur ein String, kein File-Objekt
🧠 Best Practices
-
Immer
Join-Pathstatt String-Konkatenation verwenden -
Für mehrere Segmente
-AdditionalChildPathnutzen -
Kombination mit
Test-Pathfür Existenzprüfung -
Variablen statt Hardcoding verwenden
Wenn du Pfade immer noch per String zusammenklebst, dann sabotierst du dich halt selbst mit Ansage. Funktioniert kurz, bricht später, und dann suchst du den Fehler wie ein Detektiv ohne Kaffee. Nimm einfach Join-Path und erspar dir das Drama.