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
التعاون معنا على GitHub
يمكن العثور على مصدر هذا المحتوى على GitHub حيث يمكنك أيضاً إضافة مشاكل وطلبات سحب ومراجعتها. للحصول على معلومات إضافية، اطلع على دليل المساهم لدينا.
PowerShell