【发布时间】:2019-07-21 00:21:29
【问题描述】:
在尝试使用 powershell 时,我发现了这种交互。当有一个包含以下代码的脚本时:
param(
[switch]$testSwitch = $false,
[String[]]$names = "ABC","DEF")
echo "names: $names"
echo "test: $testSwitch"
然后使用:
.\testScript.ps1 -testSwitch true
对我来说,预期的回报是名称不变并且 testSwitch 返回 True - 因为这是与输入实际无关的开关的默认值(至少我的理解)。 实际回报为:
names: true
test: True
testSwitch 的值对我来说并不奇怪,但是 names 的值被 testSwitch 中输入的值覆盖了。我正在努力理解为什么会这样。 所以我的问题是,为什么在有命名参数的同时,某个参数的输入值会覆盖一个完全不同的参数?
这似乎只发生在 switch 上,同样的例子是 int32 而不是 switch,输入 1 和默认参数 0,返回预期的结果。
【问题讨论】:
标签: powershell parameter-passing