Question:
In most example that I see in tutorials and books, the -LiteralPath option is almost never used by default (the -Path option seems to be preferred). Because the -LiteralPath option allows to use reserved characters (e.g. []), I don’t understand why it is not used more often (if not, all the time). Is it because it is preferred to escape reserved characters manually, because it has a high performance cost, because not all cmdlet support this option or because something else?
Answer:
One thing to consider is that -Path
is most likely to be the parameter that used when a string is passed in through the pipeline.
Looking at the Get-Item
cmdlet for instance:
123456789101112131415161718 -LiteralPathRequired? truePosition? NamedAccept pipeline input? true (ByPropertyName)Parameter set name LiteralPathAliases PSPathDynamic? false-PathRequired? truePosition? 0Accept pipeline input? true (ByValue, ByPropertyName)Parameter set name PathAliases NoneDynamic? false
Piping a string gets you -Path
. Your object(s) would have to have a LiteralPath
(or PSPath
) property for Get-Item
to use it. If your object has both, -Path
is used.
I guess this doesn’t necessarily answer the question; it’s a bit circular to say “-Path
is used more often because it’s more popular”. A better question might be, “Why doesn’t -Path
behave like -LiteralPath
in the first place?”