about_Booleans
Short description
Describes how boolean expressions are evaluated.
Long description
PowerShell can implicitly treat any type as a Boolean. It is important to understand the rules that PowerShell uses to convert other types to Boolean values.
Converting from scalar types
A scalar type is an atomic quantity that can hold only one value at a
time. The following types evaluate to $false
:
- Empty strings like
''
or""
- Null values like
$null
- Any numeric type with the value of
0
Examples:
PS> $false -eq ''
True
PS> if ("") { $true } else { $false }
False
PS> if ($null) { $true } else { $false }
False
PS> if ([int]0) { $true } else { $false }
False
PS> if ([double]0.0) { $true } else { $false }
False
The following types evaluate to $true
:
- Non-empty strings
- Instances of any other non-collection type
Examples:
# a non-collection type
PS> [bool]@{value = 0}
True
# non-empty strings
PS> if ('hello') { $true } else { $false }
True
PS> [bool]'False'
True
Note that this differs from explicit string parsing:
PS> [bool]::Parse('false')
False
PS> [bool]::Parse('True')
True
PS> [bool]::Parse('Not True')
MethodInvocationException: Exception calling "Parse" with "1" argument(s):
"String 'Not True' was not recognized as a valid Boolean."
Converting from collection types
Arrays are the most common collection type in PowerShell. These rules apply to any collection-like types that implement the IList interface.
- Empty collections are always
$false
- The special null value indicating the absence of output from a command,
[System.Management.Automation.Internal.AutomationNull]::Value
is always$false
. - Single-element collections evaluate to the Boolean value of their one and only element.
- Collections with more than 1 element are always
$true
.
Examples:
# Empty collections
PS> [bool]@()
False
PS> [bool](Get-ChildItem | Where-Object Name -eq 'Non-existent-File.txt')
False
# Single-element collections
PS> $a = @(0)
PS> [bool]$a
False
PS> $b = @(1)
PS> [bool]$b
True
# Multi-element collections
PS> $c = @(0,0)
PS> [bool]$c
True
See also
PowerShell
Phản hồi
https://aka.ms/ContentUserFeedback.
Sắp ra mắt: Trong năm 2024, chúng tôi sẽ dần gỡ bỏ Sự cố với GitHub dưới dạng cơ chế phản hồi cho nội dung và thay thế bằng hệ thống phản hồi mới. Để biết thêm thông tin, hãy xem:Gửi và xem ý kiến phản hồi dành cho