【发布时间】:2015-05-29 07:44:35
【问题描述】:
根据微软:
在极少数情况下,您可能需要为开关参数提供布尔值。要在 File 参数的值中为开关参数提供布尔值,请将参数名称和值括在大括号中,例如:-File .\Get-Script.ps1 {-All:$False}
我有一个简单的脚本:
[CmdletBinding()]
Param
(
[switch] $testSwitch
)
$testSwitch.ToBool()
接下来我尝试以这种方式运行它:
powershell -file .\1.ps1 {-testSwitch:$false}
结果我收到一个错误:
但如果相信微软它应该可以工作。
如果我删除 [CmdletBinding] 属性,则不会发生此错误,但由于某些原因,$testSwitch.ToBool() 会返回 False,无论我通过 $True 还是 $False。
为什么?这种行为的原因是什么?
【问题讨论】:
-
这也适用于普通布尔值。
标签: powershell