Here\'s a very simple example script:
function fun () { \"AAA $args ZZZ\" }
fun a b c
fun a - b
fun a -- b
fun a \'--\' b
fun a --- b
The r
-- 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:
PS (3) > Write-Output -- -InputObject
Will result in -inputobject as the output.