les Scripts peuvent prendre des décisions. Comment? En utilisant un concept appelé logique conditionnelle. L’instruction PowerShell if et les constructions if/else sont les moyens courants de définir des conditions.
lorsque vous écrivez des scripts PowerShell, vous le faites en pensant à une ou plusieurs tâches spécifiques. Mais, une opération peut avoir plus d’une action possible basée sur une ou plusieurs conditions. C’est dans cette situation que la construction PowerShell If-Else entre en jeu.,
dans cet article, vous apprendrez ce Qu’est la construction PowerShell If-Else, comprendrez sa syntaxe et son fonctionnement. Vous apprendrez également à partir des exemples certaines des différentes façons d’utiliser PowerShell If-Else pour ajouter une gestion de logique conditionnelle dans vos scripts.
Table des Matières
Comprendre le PowerShell Si-Sinon la Syntaxe
Le PowerShell construction if-else évalue une ou plusieurs expressions conditionnelles. Ci-dessous vous verrez Si la syntaxe de l’instruction. Ce style est parfois appelé contrôle de flux.,
if (<test1>) {<statement list 1>}
comme vous pouvez le voir dans la syntaxe ci-dessus, chaque test est placé entre 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é à true.
ensuite, il y a trois instructions possibles dans un groupe D’instructions If. Ce sont les instructions IF, ELSEIF et ELSE.,
- l’instruction
if
contient le premier test à évaluer, suivi de la première liste d’instructions incluse dans les accolades{}
.L’instruction PowerShell if est la seule instruction requise pour être présente. - l’instruction
elseif
est l’endroit où vous ajoutez des conditions. Vous pouvez ajouter plusieurs instructions ElseIf lorsque vous avez plusieurs conditions. PowerShell évaluera chacune de ces conditions séquentiellement. - l’instruction
else
n’accepte aucune condition., La liste des instructions de cette instruction contient le code à exécuter si toutes les conditions précédentes testées sont fausses.
comprendre le flux logique PowerShell If-Else
pour mieux comprendre le fonctionnement du PowerShell If-Else, vous devez vous familiariser avec son flux logique. Le diagramme ci-dessous illustre le flux de base du PowerShell If-Else.,
Lors de l’instruction if exécute, PowerShell traverse chaque condition à évaluer si le code renvoie true ou false. Un résumé du comportement est ci-dessous:
- PowerShell évalue la condition dans le Test 1.
- si le résultat du Test 1 renvoie true, le code dans la liste des instructions If s’exécutera, alors PowerShell quitte L’instruction If.,
- si le résultat du Test 1 renvoie false, PowerShell continue d’évaluer la condition (Test n) dans L’instruction ElseIf suivante.
- si le résultat du Test n renvoie false, PowerShell continue d’évaluer la condition (Test n) dans L’instruction ElseIf suivante, si une autre instruction ElseIf existe-ou-
- si le résultat du Test n renvoie false, le code de L’instruction Else s’exécute. Ensuite, PowerShell quittera L’instruction If-OR –
- si le résultat du Test n renvoie true, le code de L’instruction ElseIf s’exécute. Ensuite, PowerShell quittera L’instruction If.,
en Utilisant le PowerShell if-Else
Les sections suivantes sont que quelques exemples de la façon d’utiliser le PowerShell if-Else 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.
seule Condition If-Else
commençant par la plus basique est l’instruction single If. Vous devez utiliser une seule instruction si quand 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, alors le résultat disant "$num is greater than 10"
sera affiché à l’écran. Si le résultat est faux, PowerShell ne fait rien car il n’y a qu’une seule condition à tester.
$num = 11if ($num -gt 10) { "$num is greater than 10"}
– Coller le code ci-dessus dans PowerShell vous donnera le résultat indiqué ci-dessous.,
maintenant, si vous voulez ajouter une action de « secours” par défaut plutôt que de simplement laisser PowerShell ne rien faire lorsque le le résultat du test est faux, vous pouvez ajouter l’instruction else.
dans l’exemple ci-dessous, le code de L’instruction Else s’exécutera si la valeur de la variable $num
n’est pas supérieure à 10.
$num = 9if ($num -gt 10){ "$num is greater than 10"}else{ "$num is NOT greater than 10"}
L’exécution du code modifié dans PowerShell vous donne la sortie indiquée ci-dessous.,
à Partir avec PowerShell 7.0, une nouvelle syntaxe pour la Si la déclaration a été introduit à l’aide d’un opérateur ternaire. Unique Si les déclarations faites bon usage de cette nouvelle syntaxe.
en utilisant le même exemple ci-dessus, voici à quoi ressemblerait le code avec l’opérateur ternaire.,
$num = 11$num -gt 10 ? "$num is greater than 10" : "$num is NOT greater than 10"
Plusieurs Conditions if-Else avec ElseIf
Quand il y a plusieurs conditions à évaluer, vous avez besoin d’ajouter un ou plusieurs rapports d’ElseIf. Chaque instruction ElseIf contient l’expression de test et son propre code à exécuter.,
le script ci-dessous, lorsqu’il est exécuté, continuera à demander un nom de fruit jusqu’à ce que la frappeCTRL+C
soit émise, ou que l’utilisateur entre la lettre « X
« .
ensuite, L’instruction If passera par 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 serait exécuté.
ci-dessous est la démonstration de la façon dont le script ci-dessus se comporte lors de l’exécution dans PowerShell.,
les Rapports d’Espace Disque Libre l’État
l’espace disque Libre de déclaration est une tâche qui est commun 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.
Get-CimInstance -ClassName CIM_LogicalDisk | Where-Object {$_.DriveType -eq 3}
les informations que le code ci-dessus renverra ressembleraient à celles affichées dans cette capture d’écran suivante.,
Comme vous pouvez le voir, la sortie ci-dessus montre la lettre de lecteur et de l’espace libre des valeurs, avec d’autres propriétés. Bien que la sortie ci-dessus soit correcte, elle n’est pas intuitive. La façon dont les informations sont présentées n’indique pas si l’espace disque est dans un état critique ou d’avertissement ou normal.,
utilisation d’une instruction PowerShell If pour améliorer le Code
utilisation de L’instruction PowerShell If-Else, une sortie plus intuitive peut être obtenue en ajoutant des conditions pour vérifier si l’espace libre est supérieur ou inférieur à certains seuils. Et ces seuils définiront l’état de l’espace disque libre.
l’exemple de script 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 marqué comme avertissement. - obtenez toutes les informations sur le disque fixe de la machine locale
- parcourez toutes les informations sur le disque pour déterminer l’espace libre et marquer son état.
- si le pourcentage d’espace libre est supérieur à la valeur de la variable
$Warning
, l’état de l’espace disque est marqué comme normal., - si le pourcentage d’espace libre est supérieur à la valeur de la variable
$Critical
, l’état de l’espace disque est marqué 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 marqué comme critique.
- si le pourcentage d’espace libre est supérieur à la valeur de la variable
- Composer les propriétés de l’objet
'Drive Letter'
,'Drive Name'
,'Total Space (GB)'
,'Free Space (GB)'
,'Free Space (%)'
et'Status'
., - renvoie le rapport final
Copiez le code ci-dessous et enregistrez le script avec le nom de fichierGet-DiskSpace.ps1
. N’oubliez pas de modifier les valeurs des variables $Critical
Et $Warning
si vous souhaitez tester avec des seuils différents.
Une fois le script enregistré, testez-le en appelant son nom dans PowerShell. Vous trouverez ci-dessous un exemple de démonstration du fonctionnement de ce script.,
comme vous pouvez le voir à partir de la sortie, l’état de chaque disque est déterminé par le pourcentage était le résultat de l’utilisation de plusieurs conditions avec PowerShell if-else.
Multiple et imbriqué If-Else
disons que vous avez une instruction if-else avec une condition définie dans le blocelse
., Lorsque l’instruction if-else s’exécute, le blocelse
est appelé si le code à l’intérieur du blocif
renvoie false.
à l’intérieur du blocelse
, vous devez effectuer un autre test conditionnel. En conséquence, vous avez besoin d’une autre instruction If-Else. Ce scénario est appelé if-Else imbriqué. Le imbriquée if-Else est couramment utilisé si l’intérieur if-Else dépend du résultat de l’opération à l’extérieur if-Else.
L’utilisation de plusieurs instructions If-Else imbriquées peut être assez déroutante., Le point clé est de se souvenir du placement de l’échafaudage et de vous assurer que vous indentez 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
l’exemple de script ci-dessous montre comment plusieurs et If-Else imbriqués peuvent dépendre du résultat l’un de l’autre. La logique du code ci-dessous est la suivante.
- Si le
$SendEmail
est$false
, le script ne rien faire et de sortie., - Si le
$SendEmail
est$true
, puis le$From
et$To
variables ne doit pas être vide ou null. Sinon ,le$abortFlag
sera défini sur 1. - Si le
$SendEmail
est$true
et le$CCEnabled
est$true
, puis le$CC
variable ne doit pas être vide ou null. Sinon ,le$abortFlag
sera défini sur 1., - Si le
$SendEmail
est$true
et le$BCCEnabled
est$true
, puis le$BCC
variable ne doit pas être vide ou null. Sinon ,le$abortFlag
sera défini sur 1. - Si la valeur
$abortFlag
est 1, le script se terminera à ce stade et ne continuera pas. - Si la valeur
$abortFlag
est 0, le script continue jusqu’à la fin.
Copiez le code ci-dessous et enregistrez-le sousSend-MyMail.ps1
. Ne modifiez pas les valeurs encore.,
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 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 on le voit ci-dessous.,
Maintenant, modifiez les variables et essayer différentes combinaisons à tester la façon dont le Si imbriquées-le Reste sera affecté. Modifier et tester vous-même vous aiderait à mieux comprendre la logique.
résumé
dans cet article, vous avez appris sur la construction logique conditionnelle – la construction PowerShell If-Else., L’utilisation de 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 présentés dans cet article, vous devriez avoir appris des moyens et des techniques sur la façon d’utiliser L’instruction If-Else lors de la création d’un code décisionnel. If-Else peut être simple en utilisant une seule condition et devient plus complexe pendant que vous creusez plus profondément dans les instructions If-Else imbriquées.
Que pensez-vous de l’if-Else? Est-ce quelque chose que vous pensez que vous utiliseriez de plus en plus après avoir lu cet article?, À quelles autres fins pouvez-vous penser où vous pouvez appliquer les connaissances que vous avez acquises ici?
Lecture
- Si
- Retour à l’essentiel: Le PowerShell Boucle foreach