Powershell - $false -ne 'false' - Les valeurs booléennes

Pour me soutenir, vous pouvez vous abonner à la chaîne, partager et liker les vidéos, désactiver votre bloqueur de pub ou encore faire un don. Merci!

Bonjour,

Démonstration et explication $false -ne ‘false’, ainsi qu’un point sur les valeurs booléennes.

# Affichons les valeurs des variables $True et $False
$False
$True
# On s'assure du type de valeur de ces 2 variables
$False.GetType()
$True.GetType()
# Vérifions quelques comportements (essayez de deviner le résultat pour chacun)
$false -ne 'false'
'false' -ne $false
'' -ne $false
$false -ne ''
0 -ne $false
$false -ne 0
# Explications
# Une valeur chaîne peut être évaluée comme Booléens
# Une chaine vide comme '' correspond à $False
$false -ne ''
# Une chaine non vide comme 'False' correspond à $True
$false -ne 'false'
# Lors de l'utilisation de -eq ou -ne la valeur à droite est convertie dans le type de valeur à gauche
# On évalue des valeurs du même type
# 'false' est une valeur chaine et [string]$false vaut 'false'
'false' -ne $false
'' -ne $false
# Une valeur entière peut être évaluée comme Booléens
# 0 correspond à $False
# Un nombre différent de 0 correspond à $True
0 -ne $false
$false -ne 0
# Testez avec $True et équivalent
# Essayez de deviner le résultat
$true -eq 'true'
'true' -eq $true
'' -eq $true
$true -eq ''
1 -eq $true
$true -eq 1
# D'autres valeurs évaluées comme booléens
# Un array non vide vaut $True
$false -eq @(1,2,3,4,5)
# Un array vide vaut $False
$false -eq @()
# Une commande Powershell qui s'exécute correctement vaut $True
$false -eq (Get-Service)
# Une commande Powershell qui ne s'exécute pas correctement vaut $False
$false -eq (Get-Service -name altf4formation -ErrorAction SilentlyContinue)
# Une variable non définie, vide ou null vaut $False
# Petit changement de code lié au comportement de -eq avec $null.
if ($a) { 'TRUE' } else { 'FALSE' }
if ($Null) { 'TRUE' } else { 'FALSE' }
# -eq et -ne n'effectuent pas de cohérence de type d'objet avec $Null
$false -eq $null
$true -eq $null
'' -eq $Null
$Null -eq ''
# Seul une comparaison entre 2 valeurs $Null renvoi $True
$Null -eq $Null
$b -eq $Null

Liens en relation