Powershell 强制 bool 始终为 true

标签 powershell parameters casting

我有一个包含以下设置的脚本,如果我使用强制参数屏幕,该脚本会返回错误的结果。感觉它无法对我的输入进行某种类型验证或转换。我该如何解决?

param ( [Parameter(Mandatory=$true)] [bool]$autoinstall )

if ( $autoinstall  ) 
{
    echo "Autoinstall true"
}
else
{
    echo "Autoinstall false"
}

如果我使用 .\myscript.ps1 -autoinstall $false 调用它,则效果非常好,但如果我使用强制密码提示并输入“$false”,无论我传递什么,$autoinstall 变量始终为 true。

编辑:

使用开关对我来说不起作用。我真的需要让它既可以编写脚本,又可以作为用户快捷方式的强制参数函数,以便即时使用。

最佳答案

出现此问题的原因是输入被解释为字符串,并且您看到的是 PowerShell 将字符串强制转换为 bool 的结果,例如:

59> [bool]'0'
True

60> [bool]'false'
True

61> [bool]'False'
True

62> [bool]'$false'
True

要获取要执行的“假”路径,只需在提示输入参数时按 Enter 键,即:

63> [bool]''
False

关于Powershell 强制 bool 始终为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14405587/

相关文章:

powershell - Python 的 doctest 模块是否有 PowerShell 等价物?

php - Symfony 将参数传递给验证器约束

java - 如何使用泛型类中的类类型对象作为参数? - 泛型和反射相结合

OpenCV 创建后更改关键点或描述符参数

java - 为什么我必须抛出这个语句才能得到结果?

具有内部泛型的 C# 转换对象

Powershell解压错误

c# - Powershell 到 C# - Get-WMIObject

android - 如何在 Android 版 Google Cast 框架中自定义 Cast 对话框

powershell - 如果帐户被锁定,请发送消息