Jusqu’ici, toutes les commandes ont été tapées directement dans la console. Sophie ferme le terminal interactif : « Une commande tapée à la main, c’est bien pour explorer. Mais pour un ticket qui revient chaque semaine, on écrit un script une bonne fois pour toutes. » Après plusieurs années à automatiser des tâches d’administration système, c’est justement l’écart entre « taper une commande » et « écrire un script fiable, réutilisable par un collègue » qui prend le plus de temps à maîtriser — bien plus que la syntaxe elle-même.
Créer et enregistrer un script
Un script PowerShell est un simple fichier texte portant l’extension .ps1 :
Get-Process | Sort-Object -Property WS -Descending | Select-Object -First 5Enregistrez ce contenu dans un fichier top5-processus.ps1, avec n’importe quel éditeur de texte (Notepad, VS Code, ISE…). Rien de magique dans le fichier lui-même : c’est exactement ce que vous auriez tapé dans la console, simplement mis de côté pour être réexécuté à volonté.
Retour d’expérience terrain : privilégiez Visual Studio Code avec l’extension officielle « PowerShell » (éditée par Microsoft) plutôt que le Bloc-notes. La coloration syntaxique et l’auto-complétion évitent une bonne partie des fautes de frappe qui, sur un script de 200 lignes, deviennent très difficiles à repérer à l’œil nu.
Exécuter un script
Depuis une console PowerShell, on exécute un script en précisant son chemin, précédé de .\ s’il se trouve dans le dossier courant :
.\top5-processus.ps1Le .\ n’est pas une coquetterie : contrairement à CMD, PowerShell n’exécute jamais un script du dossier courant sans cette précision explicite, pour des raisons de sécurité (éviter qu’un script malveillant portant le même nom qu’une commande système ne s’exécute par erreur).
ExecutionPolicy : le premier blocage que vous rencontrerez
Sur une installation Windows par défaut, exécuter ce script produira très probablement une erreur du type :
impossible de charger le fichier ... car l'exécution de scripts est désactivée sur ce systèmeC’est la politique d’exécution (ExecutionPolicy) de PowerShell, une protection contre l’exécution accidentelle de scripts non vérifiés. Pour consulter la politique actuelle :
Get-ExecutionPolicyPour l’assouplir sur votre poste de travail personnel (jamais en production sans validation de votre équipe sécurité) :
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserRemoteSigned autorise l’exécution des scripts écrits localement, tout en exigeant une signature numérique pour les scripts téléchargés depuis Internet — un bon compromis pour l’apprentissage. On détaillera la signature de scripts et les enjeux de sécurité associés en section 9.
Source officielle : la documentation Microsoft sur
about_Execution_Policiesdétaille l’ensemble des niveaux disponibles (Restricted,AllSigned,RemoteSigned,Unrestricted,Bypass) et leurs implications de sécurité respectives. Accessible directement en console avecGet-Help about_Execution_Policies, ou sur learn.microsoft.com.
Structurer un script lisible
Même court, un script gagne à suivre une structure simple, dès cette première leçon :
<#
.SYNOPSIS
Affiche les 5 processus consommant le plus de mémoire.
.DESCRIPTION
Script utilisé par le service IT de Nordika pour un diagnostic rapide
en cas de ralentissement signalé sur un poste.
.NOTES
Auteur : Service IT Nordika
Dernière modification : 24/07/2026
#>
Get-Process |
Sort-Object -Property WS -Descending |
Select-Object -First 5Ce bloc <# ... #> est un commentaire d’aide (comment-based help) : il permet même à Get-Help .\top5-processus.ps1 de fonctionner sur votre propre script, exactement comme sur une cmdlet native. On détaille les commentaires et l’indentation plus en profondeur dans la prochaine leçon.
Un piège fréquent : l’encodage du fichier
Point souvent absent des tutoriels, mais rencontré régulièrement en environnement d’entreprise : un script contenant des accents (é, à, ç…) enregistré en encodage ANSI plutôt qu’UTF-8 avec BOM peut afficher des caractères corrompus une fois exécuté sur un autre poste, ou par un autre utilisateur avec des paramètres régionaux différents.
Get-Content .\top5-processus.ps1 -Encoding UTF8 | Set-Content .\top5-processus.ps1 -Encoding UTF8Bonne pratique constatée en production : dans la plupart des éditeurs modernes (VS Code notamment), configurez explicitement l’encodage par défaut des fichiers
.ps1enUTF-8 with BOM, particulièrement si vos scripts sont partagés entre plusieurs administrateurs ou déposés sur un dépôt Git commun.
Version testée pour cette formation
Les exemples de cette formation ont été rédigés et testés avec PowerShell 7.4 sur Windows 11 et Windows Server 2022. La quasi-totalité du contenu reste valable sur Windows PowerShell 5.1, à l’exception des points explicitement signalés (comme Get-Verb dont la liste s’est enrichie au fil des versions, ou certains modules multiplateformes récents).
Un script
.ps1, c’est le passage du geste ponctuel à l’outil réutilisable de l’atelier Nordika : une fois écrit, testé et partagé, n’importe quel collègue du service IT peut s’en servir sans avoir à retenir la commande exacte.
Dans la prochaine leçon, avant de plonger dans les structures de contrôle, on pose les bonnes pratiques d’écriture : indentation et commentaires — des habitudes qui feront gagner un temps précieux sur tous les scripts à venir.