Exercices de PowerShell basiques


Les conditionnelles (if/elseif/else)

Exercice 1

- Demander à l'utilisateur d'entrer sa température idéale.
- Comparer la variable $temperature à différents seuils (10 degrés et 20 degrés).
- Selon la comparaison, on affiche un message .
(Sous 10 degrés, il faut froid.
Sous 20 degrés, il ne fait pas très chaud. Autrement il fait chaud).

$temperature = Read-Host "Entrez votre température idéale"
$temperature = [int]$temperature # convertit la chaîne en entier

if ("$temperature" -lt "10") {
    Write-Host "Il fait froid."
}
elseif ("$temperature" -lt "20") {
    Write-Host "Il ne fait pas très chaud."
}
else {
    Write-Host "Il fait chaud."
    break
}

Exercice 2

- Tester l'existence du fichier "C:\test.txt"
- S'il existe, afficher "le fichier existe"
- S'il n'existe pas, afficher "le fichier n'existe pas").

$fichier = "C:\test.txt"

if (Test-Path $fichier) {
    Write-Host "Le fichier existe."
} else {
    Write-Host "Le fichier n'existe pas."
}

Le Try/Catch

Exercice 1

- Tenter de faire une division par zéro (qui comme tout le monde le sait, est impossible).
- Si l'opération provoque une erreur, récupérer et afficher un message d'erreur.

try {
# On tente de faire une division par zéro, ce qui provoque une erreur
$resultat = 10 / 0
Write-Host "Le résultat de la division est : $resultat"
}
catch {
# Si l'opération provoque une erreur, on récupère et on affiche un message
Write-Host "Une erreur s'est produite : $($_.Exception.Message)"
}

Exercice 2

- Essayez de lire le contenu d'un fichier qui n'existe pas (try)
- Capturer l'exception et afficher un message d'erreur (catch)
- Indiquer la fin de la tentative dans le bloc (finally)

try {
    # Forcer l'erreur à se terminer
    $contenu = Get-Content -Path "C:\fichier_qui_nexiste_pas.txt" -ErrorAction Stop
    
    Write-Host "Contenu du fichier :"
    Write-Host $contenu
}
catch {
    # Gérer l'erreur
    Write-Host "Une erreur s'est produite : $($_.Exception.Message)"
}
finally {
    # Ce bloc s'exécute toujours
    Write-Host "Fin de la tentative de lecture."
}

La boucle While

Exercice 1

- Définir un mot magique et le stocker dans une variable.
- Donner à l'utilisateur 3 chances maximum de le découvrir en l'entrant au clavier.

# On définit le mot magique
$motMagique = "bonheur"
# Nombre maximal de tentatives
$maxTentatives = 3

for ($i = 1; $i -le $maxTentatives; $i++) {
# On demande à l'utilisateur d'entrer un mot
$reponse = Read-Host "Entrez le mot magique (Tentative $i / $maxTentatives)"

if ($reponse -eq $motMagique) {
Write-Host "Bravo, vous avez trouvé le mot magique !"
break
}
else {
if ($i -lt $maxTentatives) {
Write-Host "Mauvaise réponse, réessayez."
}
else {
Write-Host "Désolé, vous avez épuisé vos $maxTentatives tentatives. Le mot magique était '$motMagique'."
}
}
}

Le foreach

Exercice 1

- Définir un tableau contenant des noms de fruits. (Pomme, Orange, Banane).
- Afficher successivement le nom de chaque élément du tableau.

# On définit un tableau de fruits
$fruits = @("Pomme", "Orange", "Banane")

foreach ($fruit in $fruits) {
Write-Host "Fruit actuel : $fruit"
}

Exercice 2

- Définir un tableau $utilisateurs contenant le nom et l'age de 3 personnes (Alice, Bob, Charlie).
- Afficher successivement le couple d'informations du tableau (prénom + âge).

$utilisateurs = @(
@{ Nom = "Alice"; Age = 25 },
@{ Nom = "Bob"; Age = 30 },
@{ Nom = "Charlie"; Age = 28 }
)

foreach ($utilisateur in $utilisateurs) {
Write-Host "Nom : $($utilisateur.Nom), Age : $($utilisateur.Age)"
}

Le Switch

Exercice 1

- Récupérer le jour de la semaine et le stocker dans la variable $jour. Servez-vous de la commande PowerShell : (Get-Date).DayOfWeek
- Comparer la valeur à différentes chaînes (Monday, Friday etc..)
- Si aucune case ne correspond, exécuter le bloc "default" et afficher "Aujourd'hui, on est $jour"

$jour = (Get-Date).DayOfWeek

switch ($jour) {
"Monday" {
"Courage, c'est le début de la semaine !"
}
"Friday" {
"Bientôt le week-end !"
}
default {
"Aujourd'hui, c'est $jour."
}
}

Exercice 2

- Spécifier le nom d'un fruit.
- Comparer l'entrée de l'utilisateur à plusieurs fruits (orange, banane, pomme...)
Si l'utilisateur entre le bon fruit, afficher "Succès"
Si l'utilisateur se trompe, exécuter le bloc "default" et afficher "Ce fruit n'est pas listé".

# On définit une variable $fruit avec la valeur "orange"
$fruit = "orange"

switch ($fruit) {
"pomme" {
"C'est une pomme !"
}
"orange" {
"C'est une orange !"
}
"banane" {
"C'est une banane !"
}
default {
"Fruit inconnu."
}
}

⬆️ Retour en haut de la page