4. Ajoutez de la logique fonctionnelle

Prendre des décisions, sécuriser les scripts : if / switch + Read-Host.
Aide

Commandes utiles pour résoudre les exercices

Vous n’avez pas besoin de tout connaître : retenez l’idée et utilisez l’aide (Get-Help) si nécessaire.

Entrées / sorties

  • Read-Host Demande une saisie à l’utilisateur (texte). Exemple : $nom = Read-Host "Votre nom"
  • Write-Output Affiche ou renvoie un message (sortie standard). Exemple : Write-Output "OK"

Tests et conversions

  • Test-Path Vérifie si un fichier/dossier existe. Exemple : Test-Path "C:\Temp"
  • -eq / -ne Comparaison (égal / différent). Exemple : $x -eq 5
  • -gt / -lt Comparaison (plus grand / plus petit). Exemple : $age -gt 18
  • [int] Convertit du texte en nombre. Exemple : $age = [int](Read-Host "Âge")

Aide

  • Get-Help Voir syntaxe et exemples. Exemple : Get-Help Test-Path -Examples
if

Description

if permet d’exécuter un bloc si une condition est vraie, sinon un autre bloc (via else). C’est un outil central pour sécuriser un script : on agit uniquement si la condition est valide.

Syntaxe


if (condition) {
  # actions si vrai
} else {
  # actions si faux
}
      

Exemple simple (âge)


$age = [int](Read-Host "Entrez votre âge")

if ($age -ge 18) {
  Write-Output "Accès autorisé"
} else {
  Write-Output "Accès refusé"
}
      

Explication des commandes utilisées

  • Read-Host : demande à l’utilisateur de saisir une valeur (ici l’âge).
  • [int](...) : convertit la saisie (texte) en nombre pour pouvoir comparer correctement.
  • -ge : “greater or equal” = supérieur ou égal.
  • if / else : choisit quel bloc exécuter selon la condition.
  • Write-Output : affiche (ou renvoie) le message final.

Exercices (4)

Les corrigés sont masqués : cherchez d’abord, puis comparez.

Exercice IF 1 — Mot de passe

Demandez un mot de passe. Si la saisie vaut admin afficher “OK”, sinon “Incorrect”.

Voir un corrigé possible

$pwd = Read-Host "Mot de passe"
if ($pwd -eq "admin") {
  Write-Output "OK"
} else {
  Write-Output "Incorrect"
}
            

Exercice IF 2 — Chemin (Test-Path)

Demandez un chemin. S’il existe : “Présent”, sinon : “Absent”.

Voir un corrigé possible

$path = Read-Host "Chemin à tester"
if (Test-Path $path) {
  Write-Output "Présent"
} else {
  Write-Output "Absent"
}
            

Exercice IF 3 — Nombre pair / impair

Demandez un nombre. Affichez “Pair” si le nombre est divisible par 2, sinon “Impair”.

Voir un corrigé possible

$n = [int](Read-Host "Entrez un nombre")
if (($n % 2) -eq 0) {
  Write-Output "Pair"
} else {
  Write-Output "Impair"
}
            

Exercice IF 4 — Seuil d’alerte

Demandez une valeur (ex. température). Si elle est > 30 : “Alerte”, sinon “Normal”.

Voir un corrigé possible

$t = [int](Read-Host "Température")
if ($t -gt 30) {
  Write-Output "Alerte"
} else {
  Write-Output "Normal"
}
            
switch

Description

switch traite plusieurs cas selon une valeur. C’est idéal pour créer un menu de script : l’utilisateur choisit une option, et le script exécute l’action correspondante.

Syntaxe


switch ($value) {
  "1" { # cas 1 }
  "2" { # cas 2 }
  default { # autre }
}
      

Exemple simple (menu)


$choix = Read-Host "Menu : 1=Bonjour  2=Date  3=Nom PC"

switch ($choix) {
  "1" { Write-Output "Bonjour !" }
  "2" { Write-Output (Get-Date) }
  "3" { Write-Output $env:COMPUTERNAME }
  default { Write-Output "Choix invalide" }
}
      

Explication des commandes utilisées

  • Read-Host : lit le choix utilisateur (ici “1”, “2” ou “3”).
  • switch : compare la valeur saisie à plusieurs cas.
  • Write-Output : affiche le résultat du cas choisi.
  • Get-Date : renvoie la date/heure actuelle.
  • $env:COMPUTERNAME : variable d’environnement contenant le nom de la machine.
  • default : exécuté si aucun cas ne correspond.

Exercices (4)

Corrigés masqués. L’objectif est de produire une logique menu claire et robuste.

Exercice SWITCH 1 — Menu 2 options

Menu : 1=Afficher “OK”, 2=Afficher “STOP”, sinon “Invalide”.

Voir un corrigé possible

$c = Read-Host "1=OK  2=STOP"
switch ($c) {
  "1" { Write-Output "OK" }
  "2" { Write-Output "STOP" }
  default { Write-Output "Invalide" }
}
            

Exercice SWITCH 2 — Catégorie de note

Demandez une note (A/B/C). A=“Très bien”, B=“Bien”, C=“À renforcer”, sinon “Inconnu”.

Voir un corrigé possible

$note = Read-Host "Note (A/B/C)"
switch ($note) {
  "A" { "Très bien" }
  "B" { "Bien" }
  "C" { "À renforcer" }
  default { "Inconnu" }
}
            

Exercice SWITCH 3 — Audit rapide

Menu : 1=Tester un chemin (Test-Path), 2=Afficher la date (Get-Date), sinon “Invalide”.

Voir un corrigé possible

$choix = Read-Host "1=Tester chemin  2=Date"
switch ($choix) {
  "1" {
    $p = Read-Host "Chemin"
    if (Test-Path $p) { "Présent" } else { "Absent" }
  }
  "2" { Get-Date }
  default { "Invalide" }
}
            

Exercice SWITCH 4 — Mode d’exécution

Demandez un mode : audit, repair, help. Affichez un message différent selon le mode, sinon “Mode inconnu”.

Voir un corrigé possible

$mode = Read-Host "Mode (audit/repair/help)"
switch ($mode) {
  "audit"  { "Mode audit : lecture seule" }
  "repair" { "Mode repair : actions correctives" }
  "help"   { "Aide : choisissez audit/repair/help" }
  default  { "Mode inconnu" }
}
            
Quiz

Auto-évaluation — if / switch / Read-Host

Q1 — if sert principalement à :

Q2 — switch est surtout utile pour :

Q3 — Read-Host permet :

Q4 — Pour tester l’existence d’un chemin, on utilise :

Aller au chapitre suivant