Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Korte beschrijving
Hierin wordt beschreven hoe booleaanse expressies worden geëvalueerd.
Lange beschrijving
PowerShell kan elk type impliciet behandelen als een Booleaanse. Het is belangrijk om inzicht te hebben in de regels die PowerShell gebruikt om andere typen te converteren naar Booleaanse waarden.
Converteren van scalaire typen
Een scalaire type is een atomische hoeveelheid die slechts één waarde tegelijk kan bevatten. De volgende typen evalueren $false
:
- Lege tekenreeksen zoals
''
of""
- Null-waarden zoals
$null
- Elk numeriek type met de waarde van
0
Voorbeelden:
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
De volgende typen evalueren $true
:
- Niet-lege tekenreeksen
- Exemplaren van een ander type niet-verzameling
Voorbeelden:
# a non-collection type
PS> [bool]@{value = 0}
True
# non-empty strings
PS> if ('hello') { $true } else { $false }
True
PS> [bool]'False'
True
Houd er rekening mee dat dit verschilt van expliciete tekenreeksparsering:
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."
Converteren van verzamelingstypen
Matrices zijn het meest voorkomende verzamelingstype in PowerShell. Deze regels zijn van toepassing op verzamelingachtige typen die de IList-interface implementeren.
- Lege verzamelingen worden altijd
$false
- De speciale null-waarde die aangeeft dat er geen uitvoer van een opdracht is, wordt
[System.Management.Automation.Internal.AutomationNull]::Value
altijd$false
. - Verzamelingen met één element evalueren de Booleaanse waarde van hun en enige element.
- Verzamelingen met meer dan 1 element worden altijd
$true
.
Voorbeelden:
# 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