17 chapitres4 h 29 minDébutant
Scripts PowerShell et Bash
Cours PowerShell et Bash gratuit pour le BTS SIO en 17 chapitres : pipeline, erreurs, CSV, regex, API, Active Directory, cron et exercices corrigés.
Par Josselyn C., prof de BTS SIO. Mis à jour le .
L'essentiel
Un script est un fichier texte qui enchaîne des commandes pour qu'un programme, l'interpréteur, les exécute à ta place. PowerShell est le langage de script de Windows et de l'administration Microsoft (Active Directory, Microsoft 365, Windows Server) ; Bash est le shell des serveurs Linux. Un technicien qui sait écrire un script de vingt lignes crée quarante comptes en dix secondes, vérifie chaque nuit l'espace disque de tous ses serveurs et garde une trace de tout ce qu'il a fait. Au BTS SIO, le référentiel range « langage de commande d'un système d'exploitation : commandes usuelles et script » parmi les savoirs du bloc 1, commun aux deux options, et l'option SISR demande en plus d'« automatiser des tâches d'administration » (bloc 2, évalué à l'E6).
À la fin de ce cours, tu sauras :
- écrire, lancer et dépanner un script PowerShell et un script Bash, en choisissant le bon outil pour la tâche ;
- manipuler des objets dans le pipeline PowerShell et du texte dans le pipeline Bash ;
- structurer un script avec des variables, des conditions, des boucles, des fonctions et des paramètres ;
- gérer les erreurs pour qu'un script s'arrête proprement au lieu de faire des dégâts ;
- lire et produire des fichiers CSV et JSON, chercher avec des expressions régulières et appeler une API REST ;
- administrer à distance, créer des comptes Active Directory en masse, sauvegarder et surveiller un serveur Linux ;
- planifier un script et le sécuriser : stratégie d'exécution, secrets, signature, journalisation.
Prérequis. Aucun pour les chapitres 1 à 5 : on part de « c'est quoi un script ? ». Pour la suite, savoir ouvrir une session sur un serveur Windows et sur un serveur Linux aide beaucoup (cours Windows Server et Linux : administration système).
Les versions du cours. Les exemples PowerShell sont écrits pour PowerShell 7.6, la version LTS sortie le 18 mars 2026, et fonctionnent aussi dans Windows PowerShell 5.1, celui que tu trouves sur tous les serveurs Windows, sauf quand un encadré signale une différence. Les scripts Bash visent Bash 5.2 sur Debian 13 « Trixie », la version stable de Debian, et fonctionnent sur Ubuntu 24.04 LTS.
Le fil rouge. Les exemples se passent chez Sorbier Logistique, la PME fictive de transport et d'entreposage des cours Windows Server, Routage et commutation et Cybersécurité des infrastructures. Son domaine Active Directory est ad.sorbier.example (nom NetBIOS SORBIER), son réseau 192.168.10.0/24 est découpé en VLAN, et le service informatique compte Antoine Mercier, le responsable, et deux techniciens, Chloé Lambert et Moussa Diallo. Les machines qui reviennent dans les scripts :
| Machine | Adresse | VLAN | Rôle |
|---|---|---|---|
srv-ad | 192.168.10.177 | 20 SERVEURS | Contrôleur de domaine Windows Server 2025 : annuaire, DNS, DHCP |
srv-ad2 | 192.168.10.181 | 20 SERVEURS | Second contrôleur de domaine |
srv-fichiers | 192.168.10.178 | 20 SERVEURS | Partages des services |
srv-gestion | 192.168.10.179 | 20 SERVEURS | Logiciel de gestion des stocks, outil de tickets |
srv-journaux | 192.168.10.180 | 20 SERVEURS | Journaux centralisés, supervision Zabbix, sauvegardes des configurations |
srv-web | 192.168.10.225 | 60 DMZ | Serveur web Debian 13 du suivi des livraisons |
| Poste d'administration | 192.168.10.209 | 99 ADMIN | Le poste d'où les techniciens administrent |
Les noms de domaine en .example sont réservés à la documentation : ils ne risquent pas de pointer vers une vraie machine.
Comment travailler. Installe PowerShell 7 sur ton poste (chapitre 2) et ouvre un terminal Bash, dans une machine virtuelle Debian 13 ou dans WSL sous Windows. Tape chaque exemple, lance-le, compare ce que tu obtiens avec la sortie affichée. Pour les chapitres d'administration (11 à 14), une petite maquette suffit : un contrôleur de domaine Windows Server 2025 et un serveur Debian 13, dans Proxmox VE ou VirtualBox (cours Virtualisation). Chaque chapitre se termine par des exercices dont la réponse est masquée : cherche d'abord, ouvre ensuite.
| Ton objectif | Chapitres à travailler en priorité |
|---|---|
| Découvrir les scripts (bloc 1, tronc commun) | 1 à 5, puis 7 et 8 |
| Automatiser l'administration Windows (SISR) | 2 à 4, 6 à 8, 11, 12, 14 et 15 |
| Automatiser l'administration Linux (SISR) | 1, 5 à 9, 11, 13 et 14 |
| Préparer une réalisation pour l'E5 ou l'E6 SISR | 6, 7, 12 à 15 et 16 |
| Préparer l'E7 (sécurité des scripts, journaux) | 9, 13, 15 et 16 |
| Réviser vite | 17 |
Sommaire
PowerShell et Bash
0 chapitre sur 17
- Chapitre 1 : C'est quoi un script ? PowerShell ou Bash14 min
- Chapitre 2 : PowerShell 7 et Windows PowerShell 5.1 : versions et différences13 min
- Chapitre 3 : Cmdlets, objets et pipeline PowerShell16 min
- Chapitre 4 : PowerShell : variables, conditions et boucles18 min
- Chapitre 5 : Bash : variables, conditions et boucles19 min
- Chapitre 6 : Fonctions et paramètres d'un script19 min
- Chapitre 7 : Gestion des erreurs : try/catch et set -euo pipefail19 min
- Chapitre 8 : Fichiers, CSV et JSON : Import-Csv, ConvertFrom-Json et jq16 min
- Chapitre 9 : Expressions régulières : -match, Select-String, grep et sed14 min
- Chapitre 10 : Appeler une API REST : Invoke-RestMethod, curl et jq16 min
- Chapitre 11 : Exécution à distance : PowerShell Remoting, WinRM et SSH14 min
- Chapitre 12 : Scripts Active Directory : créer des comptes en masse depuis un CSV22 min
- Chapitre 13 : Scripts Bash d'administration Linux : sauvegarde, disques et journaux18 min
- Chapitre 14 : Planifier un script : cron, timers systemd et Planificateur de tâches17 min
- Chapitre 15 : Sécurité des scripts : stratégie d'exécution, secrets et signature15 min
- Chapitre 16 : Exercices corrigés PowerShell et Bash type E6 et E7 SISR14 min
- Chapitre 17 : Aide-mémoire : équivalences PowerShell et Bash7 min
Questions fréquentes
C'est quoi un script PowerShell ?
Un script PowerShell est un fichier texte d'extension .ps1 qui enchaîne des commandes PowerShell (les cmdlets, comme Get-Service ou New-ADUser), avec des variables, des conditions et des boucles. On le lance avec .\NomDuScript.ps1, et il automatise une tâche d'administration Windows : créer des comptes, vérifier des serveurs, produire un rapport. Sa particularité est de manipuler des objets et non du texte.
Quelle est la différence entre PowerShell et Bash ?
Bash est le shell des systèmes Linux : ses commandes échangent du texte, que l'on découpe avec grep, cut ou awk. PowerShell est le shell de Microsoft : ses commandes échangent des objets dont on lit les propriétés par leur nom, sans découpage. On choisit selon la cible : PowerShell pour Windows, Active Directory et Microsoft 365, Bash pour les serveurs Linux (comparaison détaillée).
Quelle est la différence entre Windows PowerShell 5.1 et PowerShell 7 ?
Windows PowerShell 5.1 (powershell.exe) est intégré à Windows et ne reçoit plus que des correctifs ; PowerShell 7 (pwsh.exe) s'installe à côté, fonctionne aussi sous Linux et macOS, et ajoute des opérateurs (&&, ? :, ??), le parallélisme et l'UTF-8 par défaut. La version à installer fin 2026 est PowerShell 7.6, la version LTS. Un script qui doit tourner sur n'importe quel serveur Windows doit rester compatible avec 5.1.
Comment autoriser l'exécution de scripts PowerShell ?
Le message « l'exécution de scripts est désactivée sur ce système » vient de la stratégie d'exécution Restricted, la valeur par défaut de Windows PowerShell 5.1 sur les postes Windows (PowerShell 7 est installé en RemoteSigned). Pour ton compte, Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned autorise tes scripts locaux et exige une signature pour ceux venus d'Internet. En entreprise, elle se fixe par GPO, et elle ne remplace pas une vraie sécurité des scripts : elle évite les accidents, pas les attaques.
Comment exécuter un script Bash sous Linux ?
Écris le shebang #!/usr/bin/env bash en première ligne, rends le fichier exécutable avec chmod +x script.sh, puis lance-le avec ./script.sh depuis son dossier. Sans ./, Bash ne le trouve pas, car le dossier courant n'est pas dans le PATH. Un message « bash\r » introuvable signifie que le fichier a des fins de ligne Windows (les erreurs du premier script).
À quoi sert set -euo pipefail ?
Cette ligne, placée en tête d'un script Bash, l'arrête dès qu'une commande échoue (-e), dès qu'il utilise une variable non définie (-u), et fait échouer un pipe dès qu'une de ses commandes échoue (-o pipefail). Sans elle, Bash continue après une erreur, ce qui peut transformer un cd raté en suppression du mauvais dossier. Elle a des pièges à connaître, comme grep qui ne trouve rien.
Comment créer des utilisateurs Active Directory en masse avec PowerShell ?
On prépare un fichier CSV (prénom, nom, service, fonction), on le lit avec Import-Csv -Delimiter ';', puis on crée chaque compte avec New-ADUser dans l'OU du service et on l'ajoute à son groupe avec Add-ADGroupMember. Un script fiable calcule des logins sans accents, gère les homonymes, génère un mot de passe aléatoire à changer à la première connexion, et se teste d'abord avec -WhatIf (le script complet).
Comment planifier un script sous Linux et sous Windows ?
Sous Linux, on écrit une ligne dans une crontab (crontab -e ou un fichier de /etc/cron.d/), ou un timer systemd, qui garde la sortie du script dans le journal et rattrape les exécutions manquées. Sous Windows, on crée une tâche dans le Planificateur de tâches, ou avec Register-ScheduledTask, sous un compte de service géré plutôt qu'un compte personnel. Dans tous les cas, le script doit tourner sans poser de question et renvoyer un code de sortie que quelqu'un surveille.
Les scripts sont-ils au programme du BTS SIO ?
Oui, dans les deux options. Le référentiel range « langage de commande d'un système d'exploitation : commandes usuelles et script » dans les savoirs du bloc 1, commun aux deux options, et l'option SISR évalue en plus la compétence « automatiser des tâches d'administration » (bloc 2, épreuve E6), avec les « commandes et script d'administration d'une solution d'infrastructure ». Un script commenté, testé et planifié est aussi une très bonne réalisation professionnelle à présenter.