20/09/2024

Les opérateurs arithmétiques

I. Présentation

Ce chapitre s'intéresse aux opérateurs arithmétiques utilisables avec PowerShell, ce qui va nous offrir la possibilité d'effectuer des opérations mathématiques telles que l'addition, la soustraction, la division et la multiplication.

Bien que ces opérateurs soient destinés à effectuer des opérations sur des nombres, nous verrons que l'addition est particulièrement intéressante avec les chaines de caractères pour effectuer ce que l'on appelle une concaténation de chaînes.

II. La liste des opérateurs arithmétiques

Ci-dessous, une liste des 5 opérateurs arithmétiques que vous pouvez utiliser avec PowerShell :

OpérateurDescription
+Addition
Concaténer des chaines de caractères (string)
Additionner des nombres
-Soustraction
Soustraire des nombres
*Multiplication
Multiplier des nombres
/Division
Diviser des nombres
%Modulo
Reste d’une division

Pour vous souvenir des caractères à utiliser pour chaque opération, il vous suffit de vous rappeler de la façon dont il faut écrire ces opérations de calcul avec la Calculatrice Windows, ou dans Excel, par exemple.

Désormais, nous allons voir comment utiliser ces opérateurs.

III. L'addition et la concaténation

A. L'addition

Pour ce premier exemple, j'attire votre attention sur le fait que le type de la variable est très important lorsqu'il s'agit de manipuler des chiffres. En effet, pour additionner, soustraire, etc... des valeurs entre elles, il faut qu'elles soient du type "[int]" pour "integer", c'est-à-dire un nombre entier, ou du type "[Double]" pour un nombre décimal.

Nous allons définir deux variables $Chiffre1 de type "[string]" (c'est-à-dire une chaîne de caractères) et $Chiffre2 de type "[int]".

[string]$Chiffre1 = 1
[int]$Chiffre2 = 2

Lorsque nous avons besoin d'additionner deux valeurs, il suffit d'ajouter un "+" entre les deux valeurs, ou les deux noms de variables. Ainsi, si nous additionnons les variables $Chiffre1 et $Chiffre2, nous devons obtenir "3". Essayons.

$Chiffre1 + $Chiffre2

PowerShell retourne le résultat suivant :

12

Ce n'est pas le résultat que nous attendions. Mais, c'est logique. Nous n'obtenons pas "3" mais "12" qui correspond tout simplement aux valeurs de mes deux variables écrites à la suite. Autrement dit, PowerShell n'a pas fait de calcul ! En fait, c'est à cause de notre variable $Chiffre1 qui a le type "[string]" ! Si nous effectuons le même exercice avec le type "[int]" sur les deux variables, nous verrons que cela fonctionne :

[int]$Chiffre1 = 1
[int]$Chiffre2 = 2
$Chiffre1 + $Chiffre2

Cette fois-ci, le résultat obtenu est correct :

3

Voici un résumé en image de ce que l'on vient de faire :

Il faut savoir que j'ai forcé le type "[int]" sur mes deux variables mais ce n'est pas obligatoire. PowerShell est suffisamment intelligent pour typer les variables lui-même selon les données affectées (généralement, ça fonctionne bien). Prenons un exemple :

$chiffre3 = 3

Si nous regardons le type de cette variable, nous verrons que c'est "Int32", ce qui correspond bien au type de la "catégorie" des nombres entiers.

$chiffre3.GetType()

Retenez ceci : pour faire des additions en PowerShell, vous devez ajouter le caractère "+" entre les valeurs, que ce soit deux valeurs ou plus.

B. La concaténation de chaînes

La concaténation de chaînes avec l'opérateur "+" va agir sur les chaînes au format texte, comme si nous cherchions à les additionner, ou à les fusionner si vous préférez. Nous allons définir deux variables : une avec le prénom et une autre avec le nom. Ce qui donne :

# Prénom
$prenom = "Florian"

# Nom
$nom = "Burnel"

Maintenant, si nous voulons concaténer ces deux valeurs pour en faire une seule qui sera stockée dans une nouvelle variable nommée "$prenomnom", nous allons utiliser cette syntaxe :

$prenomnom = $prenom + $nom

Le problème, c'est que cette syntaxe va retourner le résultat suivant :

FlorianBurnel

Autrement dit, il manque un espace entre les deux valeurs ! Pour améliorer le résultat, nous allons concaténer ces deux valeurs avec un espace qui viendra se positionner entre les deux chaînes. Ce qui donne la syntaxe suivante :

$prenomnom = $prenom + " " + $nom

Puisqu'il y a un espace entre les guillemets, nous obtenons une sortie plus propre :

Florian Burnel

Maintenant, si nous voulons simplement écrire le prénom et le nom dans la console, nous pourrons utiliser cette syntaxe sans le "+" :

Write-Host $prenom $nom

Nous pourrions imaginer la concaténation entre une chaîne de caractères et nos deux variables de cette façon :

Write-Host "Je m'appelle $prenom $nom !"

Ce qui donne :

Je m'appelle Florian Burnel !

Il existe d'autres méthodes pour concaténer des chaînes de caractères, notamment avec les opérateurs "-join" et "-f". Pour approfondir ce point, vous pouvez consulter cet article :

IV. La soustraction

Pour soustraire deux valeurs, c'est le même principe : le type des variables doit le permettre, et ensuite, nous allons utiliser le signe "-" à la place de "+", comme nous avons appris à l'école. Il suffit d'essayer :

2 - 2

Vous allez obtenir "0". Sur le même principe que tout à l'heure, nous pouvons utiliser deux variables.

$chiffre1 = 10
$chiffre2 = 1
$chiffre1 - $chiffre2

Si le résultat de la soustraction est une valeur négative, inférieure à zéro, ce n'est pas un problème. PowerShell retournera cette valeur négative.

PowerShell soustraction de valeurs

V. La division et le modulo

PowerShell est capable de diviser une valeur par une autre, mais aussi de vous retourner le modulo, c'est-à-dire le reste d'une division. Le caractère "/" est utilisé pour séparer les valeurs qui constituent une division, tandis que pour le modulo, ce sera le caractère "%".

Quelques exemples :

# Exemple 1 - Division

10 / 2
= 5

# Exemple 2 - Division

$chiffre1 = 10
$chiffre2 = 3
$chiffre1 / $chiffre2
= 3,33333333333333

# Exemple 3 - Division

(10 + 10) / 2
= 10

# Exemple 4 - Modulo
10 % 3
= 1

# Exemple 5 - Modulo
(12 / 2) % 2
= 0

VI. La multiplication

Nous allons terminer par les multiplications, à l'aide du caractère "*". Voici une série d'exemples :

# Exemple n°1

10 * 2
= 20

# Exemple n°2

$chiffre1 = 10
$chiffre2 = 3
$chiffre1 * $chiffre2
= 30

Ce dernier exemple, nous montre que nous pouvons combiner l'utilisation des différents opérateurs dans une même opération mathématique.

((10 * 10) - 10 + 100) / 2
= 95

Les parenthèses sont importantes également, comme lorsque nous faisons des mathématiques "pour de vrai" : il convient de respecter les mêmes règles. Regardez ces deux exemples pour bien comprendre l'importance des parenthèses :

VII. Aller plus loin avec [System.Math]

Pour finir, et pour aller plus loin, sachez que le framework .NET (ainsi que .NET Core) inclus une classe nommée [System.Math] et qui contient 45 méthodes permettant d'utiliser des fonctions de calcul diverses et variées.

Nous pouvons lister l'ensemble des méthodes de cette classe avec la commande suivante :

[System.Math] | Get-Member -Static -MemberType Methods

Voici la liste, assez conséquente, comme vous pouvez le constater :

Par exemple, la méthode "Pow()" permet de calculer la puissance, par exemple "2 puissance 8" donc il faut bien préciser les deux nombres au sein de la méthode. Voici un exemple :

[math]::Pow(2,8)
# Résultat = 256

Si vous souhaitez comparer deux valeurs pour obtenir la valeur maximale entre les deux, il est possible d'utiliser la méthode "Max()" en lui précisant les deux valeurs (directement ou via une variable) :

$chiffre1 = 100
$chiffre2 = 95
[math]::Max($chiffre1,$chiffre2)
# Résultat = 100

Dans le même esprit, vous pouvez remplacer "Max" par "Min" pour obtenir la valeur la plus faible entre les deux valeurs.

Pour arrondir une valeur à la décimale inférieure ou supérieure, la méthode Round() sera utile. Nous indiquons un nombre en paramètre et la méthode va l'arrondir, en fonction de ce qui est le plus pertinent. Voici la syntaxe :

[math]::Round(10.7)
# Résultat : 11

Nous pouvons voir qu'avec la valeur "10.3", c'est arrondi à 10 et non à 11, ce qui est logique. Pour la valeur "10.5", on obtient "10" tandis que pour "10.51" nous obtenons la valeur "11".

Nous venons de voir l'essentiel lorsqu'il s'agit de faire des opérations mathématiques avec PowerShell. Si vous souhaitez aller plus loin, étudiez les différentes méthodes présentes dans la classe .NET "System.Math".

VIII. Conclusion

PowerShell est très à l'aise lorsqu'il s'agit d'effectuer des opérations mathématiques, que ce soit une simple addition, une concaténation ou des opérations plus avancées.


livre pour apprendre PowerShell
author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.