PowerShell中的布尔文字


151

PowerShell中的布尔文字是什么?


23
这是一个很好的问题,我对此表示反对。我总是赞成这样的问题,这些问题会显示在我的Google搜索中并为我提供帮助。这4个拒绝投票者真的应该重新考虑他们对此类入门级问题的态度。
ulidtko 2012年

Answers:


172

$true$false

但是,这些是常数。没有布尔值的语言级文字。

根据类型的不同,如果类型必须为布尔值(例如,在需要布尔值(且没有冲突的重载)的方法调用中)或条件语句中,则也可以使用任何强制为布尔值的值。例如,大多数非null对象为true。null,空字符串,空数组和数字0为false。


18

[bool]1并且[bool]0也有效。


3
确切地说,您可以使用很多可以在进行转换的上下文中强制转换为布尔值的东西,例如在条件语句中。在这种情况下,您根本不需要投射。if ($s.Length) { ... }例如,完全可以。
2014年

5

向现有答案中添加更多信息:布尔文字$true$false用作PowerShell(PS)脚本的命令行参数时,也照常工作。对于以下PS脚本,该脚本存储在名为的文件中installmyapp.ps1

param (
    [bool]$cleanuprequired
)

echo "Batch file starting execution."

现在,如果我必须从PS命令行调用此PS文件,则可以通过以下方式进行:

installmyapp.ps1 -cleanuprequired $true

要么

installmyapp.ps1 -cleanuprequired 1

这里1$true是等效的。另外,0$false是等效的。

注意:永远不要期望字符串文字true可以自动转换为布尔值。例如,如果我运行以下命令:

installmyapp.ps1 -cleanuprequired true

它无法执行脚本,并显示以下错误:

无法处理参数'cleanuprequired'的参数转换。无法将值“ System.String”转换为类型“ System.Boolean”。布尔参数仅接受布尔值和数字,例如$ True,$ False,1或0。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.