【问题标题】:How to stop Powershell insisting on one dash in parameters?如何阻止Powershell坚持参数中的一个破折号?
【发布时间】:2010-06-10 05:42:49
【问题描述】:

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

【问题讨论】:

  • 一年过去了,我仍然不知道为什么早期版本的powershell会消耗双破折号。较新的机器没有,事实上,我们转换了我们所有的脚本。

标签: powershell


【解决方案1】:

开关参数在 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

【讨论】:

  • 完全同意单破折号是正确的。问题是,我们有 100 多个使用双破折号的脚本,它可以在办公室的大多数机器上运行。
猜你喜欢
  • 2019-11-07
  • 1970-01-01
  • 1970-01-01
  • 2020-09-05
  • 1970-01-01
  • 2012-07-15
  • 2016-07-17
  • 2016-04-05
  • 1970-01-01
相关资源
最近更新 更多