Powershell: Why do I need to escape a double-dash parameter in $args?

Question:

Here’s a very simple example script:

The result I get is:

I apparently need to escape the double dash. Why?

I’m writing a powershell wrapper for a suite of scripts and some of those scripts assign a specific meaning to “–“. How can I pass it through unmodified?

Answer:

— is considered a special “end-ofparameters” parameter.

From Bruce Payette’s Windows PowerShell in Action:

The quotes keep the parameter binder from treating the quoted string as a parameter.
Another, less frequently used way of doing this is by using the special “end-ofparameters”
parameter, which is two hyphens back to back (–).

Everything after this sequence will be treated as an argument, even if it looks like a parameter. For example, using — you can also write out the string -InputObject without using quotes:

Will result in -inputobject as the output.

Source:

Powershell: Why do I need to escape a double-dash parameter in $args? by licensed under CC BY-SA | With most appropriate answer!

Leave a Reply