Boucles et conditions en PowerShell

2025-03-14Équipe pwsh.frDébutant~10 min de lecture

Conditions : if / elseif / else

$score = 75

if ($score -ge 90) {
    Write-Host 'Excellent !'
} elseif ($score -ge 60) {
    Write-Host 'Bien passé'
} else {
    Write-Host 'À revoir'
}

Opérateurs de comparaison

OpérateurSignificationExemple
-eqÉgal$a -eq $b
-neDifférent$a -ne $b
-gt / -ltSupérieur / Inférieur$a -gt 10
-ge / -leSupérieur ou égal / ≤$a -ge 5
-likeCorrespondance avec joker$s -like 'PS*'
-matchExpression régulière$s -match '^\d+'
-and / -or / -notLogique$a -and $b

Switch

$extension = '.ps1'

switch ($extension) {
    '.ps1'  { 'Script PowerShell' }
    '.psm1' { 'Module PowerShell' }
    '.psd1' { 'Manifeste de module' }
    default { 'Fichier inconnu' }
}

Foreach

$serveurs = @('srv01','srv02','srv03')

foreach ($srv in $serveurs) {
    Write-Host "Ping $srv..."
    Test-Connection $srv -Count 1 -Quiet
}

# Via le pipeline
$serveurs | ForEach-Object { "Traitement : $_" }

While et Do-While

# While : test avant
$i = 0
while ($i -lt 5) {
    Write-Host "Tour $i"
    $i++
}

# Do-While : test après (s'exécute au moins une fois)
do {
    $rep = Read-Host 'Continuer ? (o/n)'
} while ($rep -eq 'o')

Break et Continue

foreach ($n in 1..10) {
    if ($n -eq 3) { continue }  # Sauter le 3
    if ($n -eq 7) { break }     # Arrêter à 7
    Write-Host $n
}