PowerShell: Path Tutorial
Path parameter
Many commands have a -Path
parameter.
Path
parameter is a positional parameter and named parameter. That means, it can be first arg, or with -path value
anywhere.
# list files of a given path dir "c:/Program Files/" # or dir -Path "c:/Program Files/"
Path Value is String Type
- Path value is String type.
- Normally, quote can be omitted, but if path contains space, it must be quoted.
- Double quoted string goes thru String Expansion
- To prevent string expansion, use single quote. (but
Path Expansion
is still done. use
-LiteralPath
to prevent that.)
# use quote when path contains space dir "c:/Program Files/"
# path value of double quoted string # or # no quote # goes thru string expansion # watch out for dollar sign in it $xx = " Files" dir c:/Program$xx/ # same as dir "c:/Program Files/"
Path Expansion
Path value are expanded by path expansion. (even for single quoted path.)
Path
value can contain abbrev, such as beginning ~
to mean $home
, and String Wildcards such as *
for any characters.
dir '~/Documents/' # same as dir "$home/Documents/"
Note: $home
is one of the pre-defined variable.
[see PowerShell: Automatic Variables]
Use parameter -LiteralPath
if you do not want Path Expansion.
💡 Tip: LiteralPath with Single Quote
to prevent any path expansion, use -LiteralPath
with single quote.
Default Path Value
If Path
parameter is omitted, default value is current dir (except the cd
command, which default to $home
).
dir # same as dir . # same as dir (Get-Location)
Relative Path, Full Path
The -Path
parameter accepts both full path or relative path.
cd $home dir "Documents" # same as dir "$home/Documents/"
Path separator
Path separator is the backslash, but slash is also supported. They can be mixed.
All the following works the same:
"c:/Program Files/Windows Defender/"
"c:\Program Files\Windows Defender\"
"c:/Program Files\Windows Defender/"
single dot, double dots
- Single dot
.
means the current dir. - Double dot
..
means the parent dir.
For example:
cd ..
means go up one dircd ../..
means go up two dirs
current dir
Get-Location
(alias gl
, pwd
)
return the current dir.
Path expansion
LiteralPath
The -LiteralPath
parameter lets you input a path without
Path Expansion
. (double quoted string still go tru string expansion. [see PowerShell: String])
# list children of a dir named math* as is dir -LiteralPath "math*"