Cet article a été mis à jour pour 2023 !
Les scripts peuvent prendre des décisions. Comment ? En utilisant un concept appelé logique conditionnelle. La déclaration if de PowerShell et les constructions if/else sont les moyens courants de définir des conditions.
Lorsque vous écrivez des scripts PowerShell, vous le faites dans un but spécifique. Mais une opération peut avoir plusieurs actions possibles en fonction d’une ou plusieurs conditions. C’est là que la construction de déclaration If de PowerShell entre en jeu.
Dans cet article, vous apprendrez la construction If-Else de PowerShell et comprendrez sa syntaxe et son fonctionnement. Vous apprendrez également quelques façons d’utiliser la déclaration If de PowerShell pour ajouter une gestion de la logique conditionnelle dans vos scripts à partir des exemples.
Comprendre la syntaxe de la déclaration If de PowerShell
La construction if-else de PowerShell évalue une ou plusieurs expressions conditionnelles. Vous verrez ci-dessous la syntaxe de l’instruction If. Ce style est souvent appelé contrôle de flux.
Comme vous pouvez le voir dans la syntaxe ci-dessus, chaque test est enfermé entre des parenthèses ()
. Les tests peuvent utiliser différents opérateurs, tels que les opérateurs de comparaison et les opérateurs logiques,
Les listes d’instructions contiennent le code destiné à s’exécuter si le résultat du test est évalué comme vrai.
Ensuite, il existe trois déclarations possibles dans un groupe de déclarations If. Ce sont les déclarations IF, ELSEIF et ELSE.
- La déclaration
if
contient le premier test à évaluer, suivi de la première liste de déclarations enfermée entre les crochets{}
. La déclaration PowerShell if est la seule déclaration qui doit être présente. - La déclaration
elseif
est l’endroit où vous ajoutez des conditions. Vous pouvez ajouter plusieurs déclarations ElseIf lorsque vous avez plusieurs conditions. PowerShell évaluera chacune de ces conditions séquentiellement. - La déclaration
else
n’accepte aucune condition. La liste de déclarations dans cette déclaration contient le code à exécuter si toutes les conditions précédentes testées sont fausses.
Comprendre le flux logique de la déclaration If PowerShell
Pour mieux comprendre le fonctionnement du If-Else de PowerShell, familiarisez-vous avec son flux logique. Le diagramme ci-dessous illustre le flux de base du If-Else de PowerShell.

Lorsque l’instruction if s’exécute, PowerShell parcourt chaque condition en évaluant si le code renvoie vrai ou faux. Un résumé du comportement est ci-dessous :
- PowerShell évalue la condition dans Test 1.
- Si le résultat de Test 1 renvoie vrai, le code à l’intérieur de la liste de déclarations If s’exécutera, puis PowerShell sort de l’instruction If.
- Si le résultat de Test 1 renvoie faux, PowerShell continue d’évaluer la condition (Test n) dans la prochaine déclaration ElseIf.
- Si le résultat de Test n retourne false, PowerShell continue d’évaluer la condition (Test n) dans la prochaine déclaration ElseIf, si une autre déclaration ElseIf existe -OU-
- Si le résultat de Test n retourne false, le code dans la déclaration Else s’exécute et PowerShell quittera la déclaration If -OU-
- Si le résultat de Test n retourne true, le code dans la déclaration ElseIf s’exécute et PowerShell quittera la déclaration If.
Utilisation de la déclaration If-Else de PowerShell
Les sections suivantes présentent plusieurs exemples de l’utilisation de la déclaration If de PowerShell lors de l’écriture de scripts. Les techniques que vous apprendrez peuvent vous guider dans l’utilisation de la déclaration If si vous rencontrez une situation réelle qui nécessite son utilisation.
Condition If-Else unique
Commencez par le plus basique, la déclaration unique If de PowerShell. Vous devez utiliser une seule instruction if lorsqu’il n’y a qu’une seule condition à tester.
L’exemple ci-dessous teste si la valeur de la variable $num
est supérieure à 10. Si le résultat est vrai, le résultat disant "$num est supérieur à 10"
s’affichera à l’écran. Si le résultat est faux, PowerShell ne fait rien car il n’y a qu’une seule condition à tester.
Si vous vérifiez juste une valeur spécifique, comme
if ($Value) { }
alors PowerShell vérifiera si la$Value
n’est pas$Null
,0
,$False
, une chaîne vide, ou un tableau vide.
Coller le code ci-dessus dans PowerShell vous donnera le résultat indiqué ci-dessous.

Maintenant, vous pouvez ajouter l’instruction Else si vous souhaitez ajouter une action par défaut « fallback » plutôt que de laisser PowerShell ne rien faire lorsque le résultat du test est faux.
Dans l’exemple ci-dessous, le code dans l’instruction Else s’exécutera si la valeur de la variable $num
n’est PAS supérieure à 10.
En exécutant le code modifié dans PowerShell, vous obtenez la sortie indiquée ci-dessous.

À partir de PowerShell 7.0, une nouvelle syntaxe pour l’instruction If a été introduite en utilisant un opérateur ternaire. Les simples instructions If peuvent tirer parti de cette nouvelle syntaxe.
En utilisant le même exemple ci-dessus, voici à quoi ressemblerait le code avec l’ opérateur ternaire.

Test de $Null dans une instruction If PowerShell
Vous pourriez penser que tester une condition de $Null
est simple. Mais, le côté sur lequel vous placez la valeur $Null
est important car cela peut ne pas donner le même résultat dans chaque condition. Il est recommandé de toujours placer la condition $Null
à gauche comme ceci.
Si vous mettez le test $Null
du côté droit et que la valeur du côté gauche est une liste, comme un tableau, alors $Null
agira comme un filtre. Comme vous pouvez le voir dans l’exemple ci-dessous, si $Null
est placé du côté gauche, vous obtiendrez des résultats booléens cohérents.
$List = @(1,2,2,3,4)
$List -NE $Null
$List -EQ $Null
$Null -NE $Null
$Null -EQ $Null

Conditions multiples If-Else avec ElseIf
Lors de l’évaluation de plusieurs conditions, vous devez ajouter une ou plusieurs instructions ElseIf. Chaque instruction ElseIf contient l’expression de test et le code à exécuter.
Le script ci-dessous, lorsqu’il est exécuté, continuera de demander un nom de fruit jusqu’à ce que la touche CTRL+C
soit enfoncée, ou que l’utilisateur saisisse la lettre « X
« .
Ensuite, l’instruction If parcourra chaque condition en séquence jusqu’à ce qu’elle trouve une correspondance. Si l’entrée ne correspond à aucune des conditions, le code à l’intérieur de l’instruction Else sera exécuté.
Voici une démonstration de la façon dont le script ci-dessus se comporte lorsqu’il est exécuté dans PowerShell.

Rapport sur l’état de l’espace disque disponible
La génération de rapports sur l’espace disque disponible est une tâche courante pour les administrateurs système. La manière habituelle de rapporter les informations d’espace des disques fixes sur une machine Windows tourne autour du code ci-dessous.
Les informations que le code ci-dessus retournera ressembleront à celles montrées dans la capture d’écran suivante.

Comme vous pouvez le voir, la sortie ci-dessus montre la lettre de lecteur, les valeurs d’espace libre et d’autres propriétés. Bien que la sortie ci-dessus soit correcte, elle n’est pas intuitive. La manière dont les informations sont présentées n’indique pas si l’espace disque est dans un état critique, d’avertissement ou normal.
Utilisation d’une instruction If PowerShell pour améliorer le code
A more intuitive output can be achieved using the PowerShell If-Else statement by adding conditions to check if the free space is over or below certain thresholds. And these thresholds will define the status of the free disk space.
Le script d’exemple ci-dessous effectue ce qui suit:
- En utilisant la valeur de la variable
$Critical
, définissez le seuil auquel le pourcentage d’espace libre sera marqué comme critique. - En utilisant la valeur de la variable
$Warning
, définissez le seuil auquel le pourcentage d’espace libre sera étiqueté comme avertissement. - Obtenez toutes les informations sur les disques fixes de la machine locale
- Parcourez toutes les informations sur les disques pour déterminer l’espace libre et étiqueter son statut.
- Si le pourcentage d’espace libre est supérieur à la valeur de la variable
$Warning
, l’état de l’espace disque est étiqueté comme normal. - Si le pourcentage d’espace libre est supérieur à la valeur de la variable
$Critical
, l’état de l’espace disque est étiqueté comme avertissement. - Si le pourcentage d’espace libre est inférieur ou égal à la valeur de la variable
$Critical
, l’état de l’espace disque est étiqueté comme critique.
- Si le pourcentage d’espace libre est supérieur à la valeur de la variable
- Composez les propriétés de l’objet
'Lettre du lecteur'
,'Nom du lecteur'
,'Espace total (Go)'
,'Espace libre (Go)'
,'Espace libre (%)'
et'Statut'
. - Renvoyez le rapport final.
Copiez le code ci-dessous et enregistrez le script avec le nom de fichier Get-DiskSpace.ps1
. N’oubliez pas de modifier les valeurs des variables $Critical
et $Warning
pour tester avec différents seuils.
Vous pouvez également attribuer le résultat de la condition if/else à une variable, par exemple
$Status = if ($percentFree -gt $Warning) { 'Normal' }
pour potentiellement raccourcir la condition.
Une fois le script enregistré, testez-le en appelant son nom dans PowerShell. Voici une démonstration de l’utilisation de ce script.

Comme vous pouvez le voir dans la sortie, le statut de chaque disque est déterminé par le pourcentage d’espace disque libre, ce qui a été le résultat de l’utilisation de plusieurs conditions avec le If-Else de PowerShell.
If-Else Multiple et Imbriqué
Supposons que vous ayez une instruction if-else avec une condition définie dans le bloc else
. Lorsque l’instruction if-else s’exécute, le bloc else
est invoqué si le code à l’intérieur du bloc if
renvoie faux.
À l’intérieur du bloc else
, vous devez effectuer un autre test conditionnel. Par conséquent, vous avez besoin d’une autre instruction If-Else. Ce scénario est appelé un If-Else imbriqué. L’instruction If-Else imbriquée est couramment utilisée si le If-Else interne dépend du résultat de l’opération dans le If-Else externe.
L’utilisation de plusieurs instructions If-Else et de instructions If-Else imbriquées peut être assez confuse. Le point clé est de se souvenir de l’emplacement de l’échafaudage et de s’assurer que vous indentiez votre code. L’indentation de votre code vous aidera à reconnaître et à séparer facilement vos instructions If-Else.
Exemple d’instructions If-Else multiples/imbriquées
Le script exemple ci-dessous montre comment plusieurs instructions If-Else et des instructions If-Else imbriquées peuvent dépendre du résultat les unes des autres. La logique du code ci-dessous est la suivante.
- Si
$SendEmail
est$false
, le script ne fera rien et se terminera. - Si
$SendEmail
est$true
, alors les variables$From
et$To
ne doivent pas être vides ou nulles. Sinon, le$abortFlag
sera défini à 1. - Si
$SendEmail
est$true
et que$CCEnabled
est$true
, alors la variable$CC
ne doit pas être vide ou nulle. Sinon, le$abortFlag
sera défini à 1. - Si la variable
$SendEmail
est$true
et que$BCCEnabled
est$true
, alors la variable$BCC
ne doit pas être vide ou nulle. Sinon, le drapeau$abortFlag
sera défini sur 1. - Si la valeur de
$abortFlag
est 1, le script se terminera à ce point et ne continuera pas. - Si la valeur de
$abortFlag
est 0, le script se poursuit jusqu’à la fin.
Copiez le code ci-dessous et enregistrez-le sous le nom de Send-MyMail.ps1
. Ne modifiez pas encore les valeurs.
Une fois que vous avez enregistré le fichier, exécutez-le dans PowerShell, comme indiqué ci-dessous. La démonstration ci-dessous montre le résultat du script lorsque les valeurs des variables restent inchangées.

Ensuite, modifiez le script et mettez à jour toutes les variables correctement, comme dans cet extrait ci-dessous.
Après avoir modifié les variables, enregistrez le script et exécutez-le à nouveau. Il devrait vous montrer le même résultat, comme indiqué ci-dessous.

Maintenant, modifiez les variables et essayez différentes combinaisons pour tester comment le If-Else imbriqué sera affecté. Modifier et tester par vous-même vous aiderait à comprendre davantage la logique.
Résumé
Dans cet article, vous avez appris sur la construction logique conditionnelle – la construction d’instruction If de PowerShell. L’instruction If-Else permet aux scripteurs de formuler une logique conditionnelle et de diriger les actions de leurs scripts en fonction des résultats des tests.
Avec les exemples de cet article, vous devriez avoir appris des façons et des techniques d’utiliser l’instruction If-Else lors de la création d’un code basé sur des décisions. If-Else peut être simple en utilisant une seule condition et devient plus complexe lorsque vous creusez plus profondément dans les instructions If-Else imbriquées.
Que pensez-vous de l’instruction If-Else? Est-ce quelque chose que vous pensez utiliser de plus en plus après avoir lu cet article? Quels autres usages pouvez-vous envisager où vous pourriez appliquer les connaissances que vous avez acquises ici?