How to Join Path to Combine More Than Two Strings Into a File Path in PowerShell

Rohan Timalsina Feb 12, 2024
  1. Use the Join-Path Value to Combine More Than Two Strings Into a File Path in PowerShell
  2. Conclusion
How to Join Path to Combine More Than Two Strings Into a File Path in PowerShell

The Join-Path cmdlet allows the user to combine strings into a single path. Sometimes, you might need to combine paths to create a single path when working in PowerShell.

It is where the Join-Path cmdlet comes into action. Many child paths can be combined or appended to the main path to create a single path.

The -Path parameter specifies the main path to which the child path is appended. The-Path value determines which provider joins the paths and adds the path delimiters.

It provides the \ delimiter to join the paths. The -ChildPath parameter specifies the paths to append to the -Path parameter value.

For example, the following command uses Join-Path to combine the main path hello and a child-path world.

Join-Path -Path "hello" -ChildPath "world"

Output:

powershell join path - output 1

The Join-Path cmdlet accepts only two string inputs or one -ChildPath parameter. Using the single command, you cannot use Join-Path to combine more than two strings into a file path.

You will need to use multiple Join-Path statements together to combine more than two strings into a file path in PowerShell.

Use the Join-Path Value to Combine More Than Two Strings Into a File Path in PowerShell

Since the Join-Path path value can send down to the pipe, you can pipe multiple Join-Path statements together to combine more than two strings into a file path.

For example, the following code combines all four strings and creates a single path C:\content\software\PowerShell.

Join-Path -Path "C:" -ChildPath "content" | Join-Path -ChildPath "software" | Join-Path -ChildPath "PowerShell"

In this code snippet, you’re using the Join-Path cmdlet multiple times to gradually build a file path. With each call to Join-Path, you’re taking the current path and extending it by adding another segment.

This is done by piping the output of each Join-Path operation to the next one, essentially constructing the final file path piece by piece. The -ChildPath parameter is key here, as it specifies the additional segment to append to the existing path.

As a result, the code effectively creates a complete file path by combining the base path C: with the subsequent strings content, software, and PowerShell.

Output:

powershell join path - output 2

Combining Multiple File Paths with a Child Path in PowerShell

The primary purpose of combining multiple paths with a child path is to create fully qualified file paths in PowerShell. By understanding how to combine multiple paths with a child path, you can efficiently construct file paths dynamically, enhancing the flexibility and readability of your PowerShell scripts.

Join-Path -Path "Path1\", "Path2\" -ChildPath "Folder\File.txt"

In this code snippet, you’re using the Join-Path cmdlet to merge two paths (Path1 and Path2) with a child path (Folder\File.txt). By passing an array of root paths through the -Path parameter and specifying the child path with -ChildPath, you’re creating fully qualified file paths.

Consequently, the output presents the complete file paths formed by combining each path with the provided child path. This method offers a straightforward way to integrate multiple paths into a single file path, enhancing the versatility of your PowerShell scripts.

Output:

powershell join path - output 3

Combining Roots of a File System Drive with a Child Path in PowerShell

When dealing with multiple path roots and a child path, the Join-Path cmdlet, in conjunction with array input and the -ChildPath parameter, provides an efficient way to merge disparate path components into a cohesive file path.

In the context of the Get-PSDrive cmdlet, the -PSProvider parameter filters the drives based on the provider they belong to.

Get-PSDrive -PSProvider filesystem | ForEach-Object { $_.root } | Join-Path -ChildPath "SubFolder"

In this code snippet, you’re using the Get-PSDrive cmdlet to fetch the root paths of all filesystem drives. Then, you’re piping the results to ForEach-Object to extract each root path.

These root paths are subsequently passed to Join-Path along with the child path SubFolder. The Join-Path cmdlet combines each root path with the child path, creating fully qualified file paths.

This method allows you to dynamically generate file paths based on the root paths of the drives currently accessible on your system.

Output:

powershell join path - output 4

Conclusion

In conclusion, the Join-Path cmdlet in PowerShell serves as a valuable tool for combining strings into a single file path. While it typically accepts only two string inputs or one -ChildPath parameter, you can overcome this limitation by chaining multiple Join-Path statements together.

This article explored various methods for combining multiple strings into a file path using Join-Path, including using the cmdlet multiple times in succession and piping the output of one Join-Path operation into another. By understanding these techniques, you can dynamically construct file paths based on different scenarios and requirements in your PowerShell scripts.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Related Article - PowerShell String

Related Article - PowerShell Path