Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
PowerShell peut traiter implicitement n’importe quel type en tant que booléen . Il est important de comprendre les règles que PowerShell utilise pour convertir d’autres types en valeurs booléennes.
Conversion à partir de types scalaires
Un type scalaire est une grandeur atomique qui ne peut contenir qu’une seule valeur à la fois. Les types suivants sont évalués à $false:
- Chaînes vides telles que
''ou"" - Valeurs Null telles que
$null - Tout type numérique avec la valeur de
0
Exemples:
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
Les types suivants sont évalués à $true:
- Chaînes non vides
- Instances d’un autre type de non-collection
Exemples:
# a non-collection type
PS> [bool]@{value = 0}
True
# non-empty strings
PS> if ('hello') { $true } else { $false }
True
PS> [bool]'False'
True
Notez que cela diffère de 'analyse de chaîne explicite:
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."
Conversion à partir de types de collection
Les tableaux sont le type de collection le plus courant dans PowerShell. Ces règles s’appliquent à tous les types de type collection qui implémentent l’interface IList.
- Les collections vides sont toujours
$false - Valeur null spéciale indiquant l’absence de sortie d’une commande,
[System.Management.Automation.Internal.AutomationNull]::Valueest toujours$false. - Les collections à élément unique évaluent la valeur booléenne de leur seul élément.
- Les collections avec plus de 1 élément sont toujours
$true.
Exemples:
# 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