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 vermeidenFehler durch doppelte oder fehlende Separatoren zu verhindern
🔧
Syntax
Join-Path [-Path] <String> [-ChildPath] <String> [[-AdditionalChildPath] <String[]>] [<CommonParameters>]
-Path
Typ:
String
Pflicht: Ja
-ChildPath
Typ:
String
Pflicht: Ja
-Path angehängt wird
Join-Path -Path "C:\Temp" -ChildPath "Datei.txt"
-AdditionalChildPath
Verfügbar ab: PowerShell 6+
Typ:
String[]
Pflicht: Nein
Der Parameter ist ab PowerShell 6+ verfügbar.
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
String`String` (zusammengesetzter Pfad)🧪 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
🧠 Best Practices
Immer
Join-Pathstatt String-Konkatenation verwendenAb PowerShell 6 kann für mehrere Segmente
-AdditionalChildPathverwendet werden.Kombination mit
Test-Pathfür ExistenzprüfungVariablen 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.