代码之家  ›  专栏  ›  技术社区  ›  Julian Birch

如何停止PowerShell坚持一个破折号参数?

  •  4
  • Julian Birch  · 技术社区  · 14 年前

    似乎有人微妙地改变了在PowerShell上解析参数开关的方式。在某些计算机上,“split path c:\x\y--parent”有效。在某些方面失败了。有人能告诉我a)是什么导致了差异,b)我如何才能阻止它?

    1 回复  |  直到 14 年前
        1
  •  4
  •   stej    14 年前

    在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