Appearance
TP — Initiation à PowerShell
BTS SIO 1ère année PowerShell ISE ou VS CodeCe TP se déroule en 4 niveaux de difficulté croissante. Chaque exercice est indépendant. Lisez bien les consignes avant de commencer à écrire.
Niveau 1 — Premiers pas
Niveau 1
Variables, affichage, types de base. Tout se tape directement dans la console.
Exercice 1 — Hello PowerShell
Ouvrez PowerShell ISE et tapez les commandes suivantes une par une dans la console (zone du bas).
- Affichez le texte
Bonjour BTS SIO !avecWrite-Host - Affichez la date et l'heure actuelles avec
Get-Date - Affichez uniquement l'année en cours
Indice
Pour l'année, essayez (Get-Date).Year
Résultat
La console affiche le texte, puis la date complète, puis l'année seule (ex: 2026)
Exercice 2 — Variables et calculs
Toujours dans la console, créez les variables suivantes :
- Une variable
$prenomcontenant votre prénom - Une variable
$agecontenant votre âge - Affichez la phrase :
Je m'appelle [prénom] et j'ai [âge] ans.en utilisant l'interpolation de chaîne - Créez une variable
$anneeNaissancecalculée automatiquement à partir de$ageet de(Get-Date).Year - Affichez l'année de naissance
Indice
$anneeNaissance = (Get-Date).Year - $age
Exercice 3 — Types de variables
Dans la console, testez le comportement des types :
- Créez
$a = "10"et$b = 5. Affichez$a + $b. Que se passe-t-il ? - Forcez le type :
[int]$a = "10", puis refaites$a + $b. Quelle différence ? - Vérifiez le type d'une variable avec
$a.GetType().Name - Créez une variable
$actif = $trueet affichez son type
Résultat
Sans forçage, "10" + 5 donne 105 (concaténation). Avec [int], on obtient 15 (addition).
Niveau 2 — Fichiers et dossiers
Niveau 2
Navigation dans l'arborescence, création et lecture de fichiers.
Exercice 4 — Navigation
Dans la console :
- Affichez le dossier courant avec
Get-Location - Allez dans
C:\Windows\System32 - Listez les fichiers avec
Get-ChildItem - Listez uniquement les fichiers
.exeen utilisant le paramètre-Filter - Revenez dans votre dossier de TP :
C:\TP-PowerShell
Indice
Get-ChildItem -Filter "*.exe"
Exercice 5 — Créer une arborescence — ex5.ps1
Créez un script ex5.ps1 qui :
- Crée le dossier
C:\TP-PowerShell\Projet - À l'intérieur, crée trois sous-dossiers :
Documents,Images,Scripts - Dans
Documents, crée un fichier textenotes.txtcontenant la ligneMes notes de cours - Affiche un message de confirmation pour chaque création
Indice
New-Item -Path "C:\..." -ItemType Directory pour un dossier, -ItemType File pour un fichier. Pour écrire du texte dans un fichier : "texte" | Out-File "chemin"
Résultat
L'arborescence est créée et la console affiche un message pour chaque étape.
Exercice 6 — Lire et écrire dans un fichier — ex6.ps1
Créez un script ex6.ps1 qui :
- Vérifie si le fichier
C:\TP-PowerShell\Projet\Documents\notes.txtexiste avecTest-Path - S'il existe : lit son contenu avec
Get-Contentet l'affiche - Ajoute la ligne
Ajout du [date du jour]à la fin du fichier avecAdd-Content - Relit le fichier pour vérifier que la ligne a bien été ajoutée
Indice
Add-Content -Path "..." -Value "texte" — pour insérer la date : "Ajout du $(Get-Date)"
Niveau 3 — Conditions et boucles
Niveau 3
Écriture de scripts avec if, for, foreach et while.
Exercice 7 — Conditions — ex7.ps1
Créez un script ex7.ps1 qui :
- Déclare une variable
$noteavec une valeur entre 0 et 20 - Affiche la mention correspondante selon ce barème :
| Note | Mention |
|---|---|
| 16 et plus | Très bien |
| 14 à 15 | Bien |
| 12 à 13 | Assez bien |
| 10 à 11 | Passable |
| Moins de 10 | Insuffisant |
- Testez votre script avec plusieurs valeurs de
$note
Bonus
Ajoutez une vérification que la note est bien entre 0 et 20, sinon affichez Note invalide
Exercice 8 — Boucle for — ex8.ps1
Créez un script ex8.ps1 qui :
- Affiche les nombres de 1 à 20, un par ligne
- Pour chaque nombre, affiche
[nombre] - pairou[nombre] - impairselon le cas
Indice
L'opérateur modulo en PowerShell est %. Un nombre est pair si $i % 2 -eq 0
Résultat
1 - impair
2 - pair
3 - impair
…Exercice 9 — Boucle foreach — ex9.ps1
Créez un script ex9.ps1 qui :
- Déclare un tableau de 5 prénoms :
powershell
$eleves = @("Alice", "Bob", "Charlie", "Diana", "Evan")- Pour chaque élève, crée un dossier
C:\TP-PowerShell\Eleves\[prénom] - Dans chaque dossier, crée un fichier
info.txtcontenantDossier de [prénom] - Affiche un message de confirmation pour chaque élève traité
Indice
Pensez à créer d'abord le dossier parent C:\TP-PowerShell\Eleves avant la boucle.
Résultat
5 dossiers créés, chacun contenant un fichier info.txt personnalisé.
Exercice 10 — Boucle while — ex10.ps1
Créez un script ex10.ps1 qui simule un compte à rebours :
- Déclare une variable
$compteur = 10 - Tant que
$compteurest supérieur à 0, affiche la valeur et la décrémente - Quand la boucle se termine, affiche
Décollage !
Bonus
Ajoutez Start-Sleep -Seconds 1 dans la boucle pour que le compte à rebours s'affiche seconde par seconde.
Niveau 4 — Mise en situation
Niveau 4
Scripts plus complets combinant plusieurs notions.
Exercice 11 — Générateur de rapport — ex11.ps1
Créez un script ex11.ps1 qui génère un fichier de rapport système :
- Déclare une variable
$rapport = "C:\TP-PowerShell\rapport.txt" - Écrit dans ce fichier (avec
Out-File) un en-tête contenant la date du jour et le nom de la machine ($env:COMPUTERNAME) - Ajoute la liste des disques locaux : utilisez
Get-PSDrive -PSProvider FileSystemet une boucleforeachpour écrire chaque disque dans le fichier avecAdd-Content - Ajoute la liste des 5 premiers processus en cours d'exécution : utilisez
Get-Process, stockez le résultat dans une variable$processus, puis bouclez dessus pour écrire chaque nom dans le fichier - Affiche
Rapport généré : C:\TP-PowerShell\rapport.txt
Indice
$processus = Get-Process stocke tous les processus dans un tableau. Vous pouvez ensuite faire foreach ($p in $processus) { ... }. Pour les 5 premiers : for ($i = 0; $i -lt 5; $i++) { $processus[$i].Name }
Résultat
Un fichier rapport.txt lisible contenant la date, la machine, les disques et 5 processus.
Exercice 12 — Vérificateur de services — ex12.ps1
Créez un script ex12.ps1 qui vérifie l'état de plusieurs services Windows :
- Déclare un tableau avec les services à surveiller :
powershell
$services = @("Spooler", "wuauserv", "WinDefend")- Pour chaque service, récupère son état avec
Get-Service -Name $set stocke le résultat dans une variable - Si le service est
Running, affiche en vert :[OK] NomService est démarré - Sinon, affiche en rouge :
[ARRET] NomService est arrêté
Indice
Write-Host "texte" -ForegroundColor Green pour afficher en couleur. La propriété à comparer : $svc.Status -eq "Running"
Bonus
Comptez et affichez à la fin le nombre de services démarrés sur le total. Ex : 2/3 services actifs
Aide
En cas de blocage sur une commande : Get-Help NomCmdlet -Examples