Initialisation · 00:00:00

Tom LEFRERE · Data Scientist

Des données. Un signal.

0%
FR EN

← Portfolio

· automation · powershell · windows

Reset Pack, réinstaller Windows en une commande

Pack PowerShell pour automatiser la réinstallation complète d'un PC Windows 11 après reset : apps, drivers, dev setup, tweaks, debloat, restauration des configs depuis OneDrive.

Reset Pack, réinstaller Windows en une commande

Pourquoi ?

Alors, pour le coup, je reset mes PC assez régulièrement, c’est quelque chose qui revient tous les 3 ou 4 mois chez moi. À force de refaire les mêmes gestes, j’ai fini par me construire une petite routine d’installation, et chaque génération de routine a évolué avec les outils du moment.

En 2021, c’était un Reset Pack basé sur Ketarin, une appli qui télécharge et installe automatiquement des packages d’install depuis une liste figée. À l’époque, c’était parfait : j’avais mes 7zip, Brave, Discord, Driver Booster, Everything, FileZilla, Office 365, PatchMyPC, PUTTY, VirtualBox, VLC, XAMPP qui s’installaient seuls pendant que je faisais autre chose. Les alternatives type Ninite ou PatchMyPC faisaient le même job, c’était surtout une question de goût.

Sauf qu’en 2026, le paysage a changé. winget est arrivé nativement dans Windows 11, ce qui rend Ketarin un peu obsolète. PowerShell 5.1 est toujours là, par défaut sur toutes les machines. Mes besoins, eux, se sont étoffés : il ne s’agit plus seulement d’installer une douzaine d’apps, mais aussi de remonter mon environnement dev (WSL2, gh, Git config, clés SSH), de restaurer mes configs (Claude Code, Claude Desktop, Obsidian, PowerToys, Windows Terminal), de virer les pubs et la télémétrie, de pin ma taskbar, et de réinstaller mes 30+ extensions VSCode.

D’où cette V2, complètement réécrite : Reset Pack, une suite de scripts PowerShell qui automatise tout ça en une seule commande après un Windows propre. Quelques minutes plus tard, j’ai retrouvé toutes mes apps, mes drivers, mes configs, mes raccourcis, mes tâches planifiées et même mes apps par défaut. La journée perdue à tout reconfigurer à la main, c’est fini.

Comment ça fonctionne

Le pack est découpé en 11 modules numérotés, chacun responsable d’une étape précise. Chaque module est idempotent, ce qui veut dire que je peux le relancer sans casser quoi que ce soit, et je peux n’en exécuter qu’un seul si besoin :

  • 01-apps : install via winget de toutes mes apps depuis un apps.json (Brave, 7zip, Git, Obsidian, Signal, Steam, VLC, PowerToys, VSCode, Claude Desktop, Docker, Node, gh, etc.).
  • 02-drivers : NVCleanstall pour les Nvidia + SDIO pour le chipset/audio, lancés en mode silent.
  • 03-dev-setup : git config, WSL2 Ubuntu, long paths, gh auth login avec génération de clé SSH.
  • 04-symlinks : restaure les configs depuis OneDrive\Documents\08_Logiciels\Configs\ via des symlinks (Git, Claude Code, Claude Desktop, Windsurf, Windows Terminal, PowerToys, Obsidian).
  • 05-vscode : réinstalle toutes les extensions depuis une liste figée.
  • 06-tweaks : extensions de fichiers visibles, fichiers cachés, menu contextuel classique, widgets/Copilot off, télémétrie off, Win+V on.
  • 07-defaults : Brave par défaut sur web/pdf/html, VLC pour le multimédia, via SetUserFTA (sinon Microsoft bloque la modification programmée des associations de fichiers).
  • 08-debloat : Cortana et apps préinstallées dégagent, OneDrive reste.
  • 09-games : symlinks Saved Games, My Games, et installs LoL/Overwatch/Dofus.
  • 10-scheduled : tâche winget upgrade --all hebdo et bascule auto dark/light (7h ↔ 20h).
  • 11-finalize : pin taskbar (Brave, Explorer, Terminal, Claude), hosts file pour le blocage de pubs, ouverture de la page Brave Sync.

À côté, un script backup-configs.ps1 qui tourne en amont du reset (ou périodiquement) et qui pousse toutes mes configs vers OneDrive, pour que la restauration ait des fichiers à pointer.

Et bien sûr, le meilleur ami de la productivité Windows est toujours là : PowerToys, que j’utilise tous les jours notamment pour le color picker et FancyZones. Il est installé par le module 01-apps et sa config est restaurée par les symlinks.

Mes contributions

Tout, du début à la fin. Architecture modulaire, scripts PowerShell, helpers communs (banner, log coloré, symlinks safe avec backup automatique de l’existant, retry, force-download OneDrive Files On-Demand), gestion des modes interactif et -Auto, élévation admin automatique, normalisation des arguments comma-separés (parce que PowerShell 5.1 fait ça mal). J’ai aussi prévu deux variantes selon la machine cible (Codect et EXODIUS), ce qui me permet de garder un set d’apps légèrement différent par poste.

Ce que j’ai retenu

L’idempotence, c’est la clé. Un script qu’on n’ose pas relancer parce qu’on ne sait pas ce qui va se passer, c’est un script qu’on ne maintient pas. Là, je peux relancer n’importe quel module dix fois de suite, ça ne change rien si l’état est déjà bon. Du coup, je teste sans crainte, et c’est ce qui m’a permis d’itérer rapidement.

PowerShell 5.1 a des pièges, vraiment. Le passage de paramètres comma-separés via -File qui ne split pas vers [string[]], les permissions admin qui se perdent au relancement, les symlinks qui peuvent être verrouillés par PowerToys ou Claude Desktop le temps qu’on les remplace. Bref, il a fallu prévoir des retries un peu partout, parce qu’on est sur du Windows et que rien n’est jamais garanti.

Centraliser les configs sur OneDrive, c’est gagné. Avant, j’avais des bouts de configs un peu partout, et à chaque reset je perdais des trucs. Maintenant, tout est dans OneDrive\Documents\08_Logiciels\Configs\, versionné implicitement par OneDrive, et les symlinks font le reste. Si je modifie une config sur un poste, elle se propage toute seule.

Les apps par défaut sur Windows 11, c’est verrouillé. Microsoft empêche la modification programmée des associations de fichiers, du coup il faut passer par SetUserFTA, qui exploite un hash interne pour faire passer les modifs. Dommage que ça en soit là, mais le contournement marche très bien.

Contexte

Projet personnel, V2 d’une routine que j’entretiens depuis 2021. La perspective de repasser une journée entière à réinstaller, configurer, re-pin la taskbar, et re-cocher cinquante-douze cases dans les paramètres Windows à chaque reset, c’est ce qui m’a poussé à pousser le truc bien plus loin que la version Ketarin originale. Le pack a été développé en binôme avec Claude Code, ce qui m’a permis de cranker à fond sur l’écriture des modules et de me concentrer sur les cas particuliers (gestion des erreurs, retries, comportements de winget, etc.).

Bonnes installations, et surtout bonne routine.

Technologies utilisées

  • PowerShell 5.1+
  • winget (Windows Package Manager)
  • WSL2 / Ubuntu
  • SetUserFTA (associations de fichiers)
  • NVCleanstall + SDIO (drivers)
  • gh CLI (GitHub auth)
  • OneDrive (storage des configs)