如何阻止Powershell坚持参数中的一个破折号?

时间:2010-06-09 20:35:45

标签: powershell

似乎有人巧妙地改变了在PowerShell上解析参数开关的方式。在某些机器上“split-path c:\ x \ y --parent”有效。有些人失败了。任何人都可以告诉我a)导致差异的原因和b)如何阻止它?

1 个答案:

答案 0 :(得分:4)

切换参数在V1和V2中应该以相同的方式工作(这意味着-parent是正确的语法)。

在您的情况下,--parent应该作为字符串绑定到参数。它不应该被解释为开关。您可以通过Trace-Command

测试绑定
Trace-Command parameterbinding -Expression { split-path c:\x\y --parent} -PSHost

更多信息:

考虑----后面的每个字符串都被解释为参数,无论它看起来像是一个开关。

[14]: function test { 
    param([switch]$sw, [string]$str) 
    write-host switch is $sw
    write-host str is $str 
}
[15]: test 1
switch is False
str is 1
[16]: test -sw
switch is True
str is
[17]: test -- -sw
switch is False
str is -sw