Powershell et le left hand side
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!
Un nouvel article, pour parler d’une notion importante dans Powershell, la notion de Left Hand Side (LHS)
Lors d’utilisation d’opérateur dans Powershell, le type de l’objet placé à gauche de l’opérateur (LHS) défini le type de l’objet à droite (RHS : Right Hand Side)
On ne peut comparer, additionner, multiplier… que des éléments du même type
Si le type est différent entre LHS et RHS alors Powershell essaie de convertir l’objet RHS dans le même type que l’objet LHS, s’il n’y arrive pas, il envoi une exception
# Exemple$jackpot = 9$nombre = Read-Host "entrez un nombre"# Indiquez le nombre 10if ( $nombre -le $jackpot ) { "$nombre est plus petit que $jackpot" } else { "$nombre plus grand que $jackpot" }
On s’attend à avoir en résultat 9 est plus petit que 10 mais le résultat est 9 est égal ou plus grand que 10
Si on vérifie le type des variables
$jackpot.GetType()# $jackpot est un entier$nombre.GetType()#$nombre est une chaine
Dans l’exemple précédent, Powershell converti donc 10 en chaine et compare donc le 9 au 1 et 9 est bien plus grand que 1
# Note : -lt correspond à strictement inférieur9 -lt 10PS > True
9 -lt '10'PS > True# 10 est converti en entier
'9' -lt 10PS > False# 10 est converti en chaine
9 -lt 'foo'PS > Exception, Powershell ne peut pas convertir foo en entier
Un autre exemple avec l’opérateur de multiplication, un entier et une chaine
# On peut multiplier des caractères avec un nombre'#' * 10PS > ########### Mais On ne peut pas multiplier un nombre avec des caractères10 * '#'PS > Exception, Powershell ne peut pas convertir # en entier
Un dernier exemple avec l’opérateur de multiplication, un array et une chaine ou le résultat va être différent en fonction de l’élément en LHS
$Array = 'foo','bar''Hello ' + $ArrayPS > Hello foo bar# Powershell a réussi à convertir mon array en chaine
$Array + 'Hello 'PS > fooPS > barPS > Hello# Powershell à ajouter ma chaine à mon array
C’est aussi pourquoi les comparaisons avec $null doivent être placées à gauche
Pour en savoir plus sur l’utilisation de $null, vous pouvez lire l’article de Kevin Marquette (https://powershellexplained.com) publié sur le site de Microsoft
https://learn.microsoft.com/en-us/powershell/scripting/learn/deep-dives/everything-about-null#checking-for-null
Liens en relation
Powershell - Tester la connectivité réseau et l'accessibilité aux ports
Tester la connectivité réseau et l'accessibilité aux ports avec PowershellPowershell - Afficher les connections réseau (équivalent de netstat)
Afficher les connections réseau (ports en écoute, connections actives...)Powershell - Tester la résolution de nom (équivalent de nslookup)
Commandes Powershell permettant de tester la résolution de nom (équivalent de nslookup)Powershell - Afficher et gérer la configuration DNS des interfaces réseau
Commandes Powershell permettant d'afficher et de gérer la configuration DNS des interfaces réseauPowershell - Gérer la configuration IP des interfaces réseau
Commandes Powershell permettant d'afficher et de modifier la configuration IP des interfaces réseauPowershell - Gérer l'état et la configuration des interfaces réseau
Commandes Powershell permettant d'afficher et de modifier l'état et la configuration des interfaces réseau (désactiver l'IPv6, activer/désactiver une interface)
Suivez-moi sur
Soutenez-moi
Contenu récent
Powershell - Tester la connectivité réseau et l'accessibilité aux ports
Powershell - Afficher les connections réseau (équivalent de netstat)
Powershell - Tester la résolution de nom (équivalent de nslookup)
Powershell - Afficher et gérer la configuration DNS des interfaces réseau
Powershell - Gérer la configuration IP des interfaces réseau
Powershell - Gérer l'état et la configuration des interfaces réseau
Powershell et le left hand side
Powershell - Gérer les disques, les partitions et les volumes
Powershell - Gérer les points de restauration système sous Windows