Skip to main content

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>]
Parameter Typ Beschreibung
Path String Basispfad (z. B. Verzeichnis)
ChildPath String Pfadsegment, das an -Path angehängt wird
AdditionalChildPath String[] Weitere Pfadsegmente, die nacheinander angehängt werden

Der Parameter AdditionalChildPath ist ab PowerShell 6+ verfügbar.


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

EigenschaftBeschreibung
PlattformabhängigkeitBerücksichtigt das jeweilige Dateisystem
Rückgabewert`String` (zusammengesetzter Pfad)
ValidierungKeine Existenzprüfung des Pfades
Separator-HandlingAutomatisch 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

🧠 Best Practices

  • Immer Join-Path statt String-Konkatenation verwenden
  • Ab PowerShell 6 kann für mehrere Segmente -AdditionalChildPath verwendet werden.
  • Kombination mit Test-Path fü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.