Les structures
IF-ELSE-ELSEIF
Le bloc IF permet l'éxécution d'un bloc de code uniquement dans le cas où une condition est remplie.
$Texte = "Condition"
if ($Texte -eq "Condition")
{
Write-Host "Condition remplie"
}
else
{
Write-Host "Condition NON-remplie"
}
Le bloc ELSEIF permet de rajouter une condition.
$Texte = "Condition"
if ($Texte -eq "Condition")
{
Write-Host "Condition remplie"
}
elseif ( $Texte -is [string] )
{
Write-Host "Condition NON-remplie mais la valeur est bien une châine de caractère"
}
Les blocs ELSE et ELSEIF ne sont pas obligatoire à la suite d'un bloc IF
FOREACH
A l'instar de la commande Foreach-Object . foreach permet de répéter une action pour chaque éléments d'une collection d'objets.
$Names = @('Mathieu', 'Julien', 'Sylvain', 'Romain')
ForEach ($Name in $Names)
{
Write-Host "Hello $Name!"
}
Hello Mathieu!
Hello Julien!
Hello Sylvain!
Hello Romain!
Ici $Names est la variable contenant la collection à parcourir, tandis que $Name représente l'élément unique de cette collection, dont la valeur changera à chaque itération de la boucle.
La boucle Foreach est trés utile pour générer rapidement une collection d'objets de type pscustomobject
$Tablede10 = foreach ($Number in 1..10)
{
[PSCustomObject]@{
Calcul = "$Number x 10"
Résultat = $Number*10
}
}
$Tablede10
Calcul Egal
------ ----
1 x 10 10
2 x 10 20
3 x 10 30
4 x 10 40
5 x 10 50
6 x 10 60
7 x 10 70
8 x 10 80
9 x 10 90
10 x 10 100
WHILE
Le bloc WHILE permet d'éxécuter le bloc de code tant qu'une condition est remplie.
$i = 10
While($i -ge 0)
{
$i
$i --
}
DO-WHILE
Le bloc DO-WHILE est identique au bloc WHILE mais vérifie la condition à la fin, le bloc de code s'éxécutera donc au mininum une fois.
$i = 10
do
{
$i
$i --
} while ($i -ge 0)
DO-UNTIL
Le bloc DO-UNTIL est identique au bloc DO-WHILE mais s'éxécutera jusqu'à ce que la condition soit vraie. Elle s'éxécutera donc tant que la condition est fausse.
$i = 10
do
{
$i
$i --
} while ($i -ge 0)
SWITCH
Le bloc SWITCH permet d'éxécuter un bloc de code en fonction de plusieurs cas de figure.
$Value = "Condition"
switch($Value)
{
'Condition' { Write-Host 'Condition n°1 remplie' }
'Fondition' { Write-Host 'Condition n°2 remplie' }
}
$Value = 15
switch($Value)
{
$_ -gt 0 { Write-Host 'La valeur est supérieure à 0' }
$_ -lt 20 { Write-Host 'La valeur est inférieur à 20' }
}
En ajoutant le paramètre -WildCard Le bloc
SWITCH
permet d'accepter des caractères wildcard et regex dans la condition
$Value = "Condition"
Switch –Wildcard ($Value)
{
'Condition' { Write-Host 'Condition n°1 remplie' }
'Condi*' { Write-Host 'Condition n°2 remplie' }
'C[aoc]ndition' {Write-Host 'Condition n°3 remplie' }
'C?ndition' {Write-Host 'Condition n°4 remplie' }
}
Les Opérateurs Break / Continue
continue
L'opérateur continue fonctionne à l'intérieur d'une boucle (for, foreach, while and do). Il permet de passer l'itération en cours de la boucle sans l'arrêter.
$i = 0
while ($i -lt 20)
{
$i++
if ($i -eq 7) { continue }
Write-Host $I
}
Hello Mathieu!
Hello Julien!
Hello Sylvain!
Hello Romain!
break
L'opérateur break fonctionne à l'intérieur d'une boucle (for, foreach, while and do). Il permet d'arrêter immédiatement le fonctionnement de la boucle.
$i = 0
while ($i -lt 15)
{
$i++
if ($i -eq 7) { break }
Write-Host $i
}
Ce code va compter les chiffres de 1 à 15 mais va s'arrêter arrivé au chiffre 7.
break peut aussi être appelé à n'importe quel endroit d'un fichier de script. Il arrêtera alors l'exécution du script en lui même.