Get Current Working Directory in PowerShell
The current working directory is the directory that a user is in at a given time. In PowerShell, the current working directory can be retrieved using the Get-Location
cmdlet. The Get-Location
cmdlet returns an object that represents the current directory and its properties, such as the path and provider.
In PowerShell, the current working directory is not just a simple string, but rather an instance of the System.Management.Automation.PathInfo
class. This class has various properties and methods that provide information about the current working directory and allow you to perform operations on it.
Here are some code examples that demonstrate how to get the current working directory in PowerShell and perform operations on it:
Example 1: Get the Current Working Directory
The simplest way to get the current working directory is to use the Get-Location
cmdlet:
PS C:\> Get-Location
Path
----
C:\
Example 2: Get the Current Working Directory Path as a String
To get the current working directory path as a string, you can use the Path
property of the object returned by the Get-Location
cmdlet:
PS C:\> (Get-Location).Path
C:\
Example 3: Change the Current Working Directory
To change the current working directory, you can use the Set-Location
cmdlet. For example, to change the current working directory to the C:\Windows
directory, you can use the following code:
PS C:\> Set-Location -Path "C:\Windows"
PS C:\Windows>
Note that the prompt has changed to reflect the new current working directory.
Example 4: Get the Parent Directory of the Current Working Directory
To get the parent directory of the current working directory, you can use the Split-Path
cmdlet and pass the Parent
parameter:
PS C:\Windows> Split-Path (Get-Location) -Parent
C:\
Example 5: Get the Root Directory of the Current Working Directory
To get the root directory of the current working directory, you can use the Split-Path
cmdlet and pass the Drive
parameter:
PS C:\Windows> Split-Path (Get-Location) -Drive
C:\
Example 6: Get the Name of the Current Working Directory
To get the name of the current working directory, you can use the Split-Path
cmdlet and pass the Leaf
parameter:
PS C:\Windows> Split-Path (Get-Location) -Leaf
Windows
Conclusion
In PowerShell, the current working directory can be retrieved using the Get-Location
cmdlet. The current working directory is represented by an instance of the System.Management.Automation.PathInfo
class, which has various properties and methods that provide information about the current working directory and allow you to perform operations on it. The examples in this article demonstrate how to get the current working directory, change the current working directory, get the parent directory, root directory, and name of the current working directory.
In PowerShell, there are several ways to manipulate the current working directory and its properties. Here are a few additional topics related to the current working directory in PowerShell:
- Push-Location and Pop-Location cmdlets
The Push-Location
and Pop-Location
cmdlets allow you to temporarily change the current working directory and later return to the previous working directory. The Push-Location
cmdlet pushes the current working directory onto a stack and changes the current working directory to the specified location. The Pop-Location
cmdlet pops the last directory off the stack and changes the current working directory back to the previous directory.
For example, the following code demonstrates how to use the Push-Location
and Pop-Location
cmdlets:
PS C:\> Push-Location -Path "C:\Windows"
PS C:\Windows> Push-Location -Path "C:\Windows\System32"
PS C:\Windows\System32> Pop-Location
PS C:\Windows> Pop-Location
PS C:\>
- Providers
In PowerShell, the file system is not the only type of data that can be represented as a file or directory. Other data sources, such as the registry, certificates, and the environment, can also be represented as files and directories using providers. Providers are modules that implement the Microsoft.PowerShell.Core.Provider namespace.
The current working directory in PowerShell is not just a simple string, but rather an instance of the System.Management.Automation.PathInfo
class that contains information about the current working directory path and provider. To get the current working directory provider, you can use the Drive
property of the object returned by the Get-Location
cmdlet:
PS C:\> (Get-Location).Drive.Provider
Microsoft.PowerShell.Core\FileSystem
- Relative Paths
In PowerShell, you can specify a path relative to the current working directory instead of an absolute path. A relative path is a path that starts from the current working directory and specifies only the relative location of a file or directory. For example, the following code demonstrates how to change the current working directory to the Windows
directory using a relative path:
PS C:\> Set-Location -Path ".\Windows"
PS C:\Windows>
In this example, the dot (.
) represents the current working directory and the backslash (\
) is used as a separator.
- Persistent Working Directory
In PowerShell, the current working directory is not persisted across sessions. This means that when you close a PowerShell session and start a new one, the current working directory will be reset to the default location. To persist the current working directory across sessions, you can use the Set-Item
cmdlet to set the value of the $PWD
variable to the current working directory:
PS C:\Windows> $PWD = Get-Location
PS C:\Windows> Set-Item -Path "Variable:\PWD" -Value $PWD
This will store the current working directory in the $PWD
variable and persist the value across sessions. To retrieve the persistent working directory in a new session, you can use the following code:
PS C:\> $PWD = Get-Item -Path "Variable:\PWD"
PS C:\> Set-Location -Path $PWD.Value
Popular questions
Here are 5 questions and answers about the current working directory in PowerShell:
- How do you get the current working directory in PowerShell?
The current working directory can be retrieved using the Get-Location
cmdlet in PowerShell. The following is an example:
PS C:\> Get-Location
Path
----
C:\
- How do you change the current working directory in PowerShell?
The current working directory can be changed using the Set-Location
cmdlet in PowerShell. The following is an example:
PS C:\> Set-Location -Path "C:\Windows"
PS C:\Windows>
- How do you specify a relative path in PowerShell?
In PowerShell, you can specify a relative path by using the current working directory as a starting point. A relative path starts from the current working directory and specifies only the relative location of a file or directory. The following is an example:
PS C:\> Set-Location -Path ".\Windows"
PS C:\Windows>
In this example, the dot (.
) represents the current working directory and the backslash (\
) is used as a separator.
- How do you persist the current working directory across sessions in PowerShell?
The current working directory is not persisted across sessions in PowerShell. To persist the current working directory, you can use the Set-Item
cmdlet to set the value of the $PWD
variable to the current working directory:
PS C:\Windows> $PWD = Get-Location
PS C:\Windows> Set-Item -Path "Variable:\PWD" -Value $PWD
This will store the current working directory in the $PWD
variable and persist the value across sessions. To retrieve the persistent working directory in a new session, you can use the following code:
PS C:\> $PWD = Get-Item -Path "Variable:\PWD"
PS C:\> Set-Location -Path $PWD.Value
- What is the
Push-Location
andPop-Location
cmdlets in PowerShell?
The Push-Location
and Pop-Location
cmdlets allow you to temporarily change the current working directory and later return to the previous working directory. The Push-Location
cmdlet pushes the current working directory onto a stack and changes the current working directory to the specified location. The Pop-Location
cmdlet pops the last directory off the stack and changes the current working directory back to the previous directory. The following is an example:
PS C:\> Push-Location -Path "C:\Windows"
PS C:\Windows> Push-Location -Path "C:\Windows\System32"
PS C:\Windows\System32> Pop-Location
PS C:\Windows> Pop-Location
PS C:\>
Tag
Directory.