首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell强制布尔值始终为真

Powershell强制布尔值始终为真
EN

Stack Overflow用户
提问于 2013-01-19 02:48:11
回答 2查看 19.3K关注 0票数 9

我有一个包含以下设置的脚本,如果我使用强制参数屏幕,它会返回不正确的结果。感觉就像它没能对我的输入进行某种类型验证或强制转换。我怎么解决它呢?

代码语言:javascript
复制
param ( [Parameter(Mandatory=$true)] [bool]$autoinstall )

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

如果我使用.\myscript.ps1 -autoinstall $false来调用它,这将非常有效,但如果我使用强制密码提示并输入'$false‘,则无论我传递什么,$autoinstall变量都始终为真。

编辑:

使用开关对我不起作用。我真的需要有这两个脚本化和强制性参数函数的用户快捷方式的飞行使用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-19 05:08:31

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

代码语言:javascript
复制
59> [bool]'0'
True

60> [bool]'false'
True

61> [bool]'False'
True

62> [bool]'$false'
True

要获得要执行的"false“路径,只需在系统提示输入参数时按enter键即可:

代码语言:javascript
复制
63> [bool]''
False
票数 10
EN

Stack Overflow用户

发布于 2013-01-19 02:59:05

为什么不直接使用switch呢?试试这个:

代码语言:javascript
复制
param ( [switch]$autoinstall )

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

输出:

代码语言:javascript
复制
[20:40:46] PS-ADMIN C:\Users\Graimer\Desktop> .\Untitled4.ps1
Autoinstall false
[20:42:36] PS-ADMIN C:\Users\Graimer\Desktop> .\Untitled4.ps1 -autoinstall
Autoinstall true
[20:42:38] PS-ADMIN C:\Users\Graimer\Desktop> .\Untitled4.ps1 -autoinstall:$true
Autoinstall true
[20:42:41] PS-ADMIN C:\Users\Graimer\Desktop> .\Untitled4.ps1 -autoinstall:$false
Autoinstall false
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14405587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档