How to Change the Working Directory in PowerShell
Many standard Command Prompt (CMD) commands work in the Windows PowerShell environment. The PowerShell environment carries these commands forward from the most basic commands like ping to the most utilized commands like ipconfig from the legacy environment using aliases.
One example of a CMD command that still works with Windows PowerShell is the change directory command or cd and chdir.
Though we can use the legacy command cd and chdir inside Windows PowerShell, it is better to use its PowerShell cmdlet Set-Location in specific situations for proper and cleaner code construction.
Use the Set-Location Cmdlet to Change the Working Directory in PowerShell
The Set-Location cmdlet similarly sets the working directory to a specified location like its legacy counterpart cd and chdir. The slight difference of this cmdlet from the legacy commands is that the Set-Location cmdlet will conveniently change both the working drive and directory simultaneously in which CMD.EXE cannot do.
If we need to change our working directory to another drive in Command Prompt, we still need to enter the <drive letter>: first, then initiate our cd and chdir commands to change the working directory path.
Command Prompt:
C:\> cd C:\Temp
C:\Temp> cd D:\Docs
C:\Temp>
#To change the working drive, type the drive letter
C:\Temp> D:
D:\>
PowerShell:
PS C:\> Set-Location C:\Temp
PS C:\Temp> Set-Location D:\Docs
PS D:\Docs>
The Set-Location cmdlet also differentiates itself from its legacy command because of additional parameters.
Here are some examples below.
Set-Location -Path C:\Temp
On the example snippet above, the -Path parameter will specify the new working directory of our scripting environment. However, if your path has spaces, remember to enclose them with single ('') or double ("") quotation marks.
Set-Location -Path "C:\Temp\Temporary Documents"
Another helpful parameter inside the Set-Location cmdlet is the -PassThru parameter. This parameter will return the new working directory that we can use to store the returned value to a variable.
Example Code:
$newDir = Set-Location -Path C:\Temp -PassThru
Write-Output $newDir.path
Output:
C:\Temp
You can also only access the complete properties list of the Set-Location cmdlet if only you have the -PassThru parameter.
Example Code:
Set-Location -Path G: -PassThru | fl *
Output:
Drive : G
Provider : Microsoft.PowerShell.Core\FileSystem
ProviderPath : G:\
Path : G:\
Lastly, aside from cd and chdir, Windows PowerShell also uses sl as another alias for Set-Location. You may use this for a faster and smoother scripting approach.
sl -Path C:\Temp
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedInRelated Article - PowerShell Directory
- How to Get the Parent's Parent Directory in PowerShell
- PowerShell Equivalent of Linux mkdir Command
- How to Query Active Directory Users in PowerShell
- How to Filter Files and Folders Using PowerShell
- How to Get Only Directories Using Get Childitem in PowerShell
- How to Create Directory Using Windows PowerShell
