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!" 
}
Output
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
Output
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
}
Output
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.