据微软称:
在极少数情况下,您可能需要为开关参数提供布尔值。要为 File 参数值中的开关参数提供布尔值,请将参数名称和值括在大括号中,如下所示: -File .\Get-Script.ps1 {-All:$False}
我有一个简单的脚本:
[CmdletBinding()]
Param
(
[switch] $testSwitch
)
$testSwitch.ToBool()
接下来我尝试以这种方式运行它:
powershell -file .\1.ps1 {-testSwitch:$false}
As result I receive an error:
但如果相信微软的话它应该可以工作。
如果我删除[CmdletBinding]
属性不会出现这个错误,但是由于某些原因$testSwitch.ToBool()
不管我是否通过都返回 False$True
or $False
.
为什么?这种行为的原因是什么?
解决方法是不使用 -File 参数:
c:\scripts>powershell.exe .\test.ps1 -testswitch:$true
True
c:\scripts>powershell.exe .\test.ps1 -testswitch:$false
False
这也是一个活跃的错误微软连接 https://connect.microsoft.com/PowerShell/feedback/details/742084/powershell-v2-powershell-cant-convert-false-into-swtich-when-using-file-param
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)