WinGet DSC : une approche moderne pour préparer une machine Windows 11
En s’appuyant sur PowerShell DSC 3.0, le gestionnaire de paquets WinGet est capable de déployer des applications sur Windows. Il peut également définir la configuration de la machine à l’aide d’un simple fichier YAML. Voici un exemple pratique d’utilisation de WinGet DSC.
Comme son nom l’indique, WinGet DSC repose sur deux composants de Windows :
- WinGet, le gestionnaire de paquets permettant de gérer les applications directement en ligne de commande. Par exemple, la commande permet d’installer une application.
- PowerShell DSC 3.0, l’outil de gestion de configuration de Microsoft, intégré à Windows et qui permet de définir un état attendu pour une machine Windows (dans le même esprit qu’Ansible). DSC signifie Desired State Configuration.
L’idée est la suivante : définir la configuration attendue dans un fichier YAML et l’appliquer directement par l’intermédiaire de WinGet. La commande à utiliser sera alors . Mais comment créer ce fichier ? Que peut-on définir comme directive ? C’est ce que nous verrons dans la suite de ce tutoriel.
Sommaire
Les fonctionnalités de WinGet DSC
Le fichier de configuration exécuté par l’intermédiaire de WinGet DSC est capable d’agir sur plusieurs composantes du système d’exploitation Windows. On peut notamment citer :
- Paquets : installer des logiciels par l’intermédiaire des dépôts WinGet / Microsoft Store.
- Registre : configurer une clé ou une valeur de Registre.
- Environnement : gérer une variable d’environnement.
- Système : configurer des fonctionnalités de Windows, y compris pour pousser des configurations de logiciels.
- Script : exécuter des blocs de script PowerShell.
- Service : gérer un service Windows.
- Fonctionnalités Windows : activer, désactiver et configurer certaines fonctionnalités Windows.
La structure du fichier WinGet DSC
Un fichier de configuration WinGet doit utiliser une convention de nommage très simple : il suffit de préciser l’extension (ou .). Dans la suite de cet article, nous créerons le fichier suivant : . Dans sa documentation, Microsoft évoque aussi l’extension .
Ce fichier doit commencer par une ligne précisant le schéma de configuration utilisé. Soit cette ligne :
Ensuite, un fichier de configuration WinGet est séparé en deux sections principales :
- Assertions : les conditions préalables requises pour exécuter la configuration. Par exemple, une version de Windows minimale.
- Ressources : les actions à effectuer en s’appuyant sur des ressources DSC. C’est dans cette section qu’il faudra déclarer la liste des logiciels à installer, les options à configurer sur Windows ou encore les scripts à exécuter.
Dans la suite de cet article, nous verrons un exemple concret.
Exemple d’utilisation de WinGet DSC sur Windows 11
Activer les fonctionnalités avancées de WinGet
Commencez par ouvrir une console sur votre machine Windows. La première étape à effectuer qu’une seule fois consiste à activer les fonctionnalités étendues de WinGet grâce à la commande suivante :
Cette étape préparatoire débloque les fonctionnalités de la commande que nous utiliserons par la suite pour appliquer la configuration.
Construire le fichier de configuration WinGet
Désormais, nous allons construire le fichier de façon à exécuter les actions suivantes :
- Installer l’application VLC Media Player via WinGet
- Installer l’application 7-Zip via WinGet
- Installer l’application Mozilla Firefox ESR via WinGet
- Installer l’application PowerToys via Microsoft Store
- Configurer la valeur de Registre pour activer la sauvegarde automatique du Registre
- Personnaliser la configuration de l’Explorateur de fichiers Windows (afficher les extensions de fichiers, masquer les fichiers cachés)
- Personnaliser la configuration de la Barre des tâches de Windows (alignement à gauche, masquer le bouton des widgets, etc.)
- Créer le dossier C:sources à l’aide de PowerShell (surtout pour montrer un exemple d’exécution de code PowerShell)
Dans le cas où vous souhaitez installer des applications, comme c’est mon cas ici, vous devez identifier le nom des paquets. Pour cela, utilisez WinGet en ligne de commande. Prenons l’exemple du paquet PowerToys.
La recherche s’effectue de cette façon :
Vous devez ensuite repérer la valeur de la colonne correspondante à l’application à installer. Ici, ce serait la première ligne avec l’ID est et la source est . Nous allons réutiliser ces informations dans le fichier de configuration.

Voici la configuration complète pour dérouler les actions évoquées ci-dessus, en commençant par une vérification de la version minimale de Windows. La configuration est facilement lisible. Sachez que dans la section , l’identifiant de chaque bloc () est une valeur personnalisable.
Il y a des directives communes, notamment :
- : utile pour documenter votre configuration et faciliter l’interprétation.
- : pour lancer l’action avec des privilèges administrateur, ce qui est essentiel pour certaines installations de logiciels ou configuration.
- : autoriser ou non la configuration à utiliser des modules en préversion. Nécessaire actuellement pour certains modules.
À la fin, la ligne indique la version à utiliser pour lire la configuration.
Valider la configuration WinGet
La commande contient plusieurs sous-commandes (voir cette page), dont celle nommée permettant de valider la syntaxe d’un fichier de configuration. Cette étape me semble essentielle avant d’appliquer une configuration sur une machine.
Voici un exemple d’utilisation sur le fichier actuel :
Il y a des erreurs importantes signalées par cette commande. Alors que, parfois, c’est plus des avertissements, notamment pour vous forcer à respecter les bonnes pratiques. Par exemple, si vous indiquez comme nom de ressource à la place de , il y aura un avertissement. La raison : le nom est trop vague, et plusieurs modules peuvent contenir une ressource avec ce nom, ce qui peut porter à confusion.
Appliquer la configuration WinGet
Quand vous serez prêts, appliquez la configuration sur la machine Windows 11 avec la commande suivante :
Patientez pendant l’opération. Un suivi s’affiche dans la console au fur et à mesure. Quand il y a un bouclier sur une ligne, c’est parce que l’action est effectuée avec des privilèges élevés. La configuration est effectuée en temps réel, donc vous verrez directement les changements.

Conclusion
WinGet DSC est une approche moderne pour le déploiement des applications sur Windows et pour appliquer une configuration. C’est une approche aussi plus standardisée et structurée qu’un script PowerShell maison, car on se rapproche plus du style d’un outil comme Ansible grâce à l’utilisation de PowerShell DSC.
Pour préparer une machine rapidement, y compris un environnement de développement, WinGet DSC est efficace. Vous écrivez la configuration une fois et vous l’appliquez autant de fois que vous le souhaitez. Surtout, si vous relancez la même configuration sur la même machine plusieurs fois, tout sera vérifié et seules les étapes nécessaires (par exemple un logiciel manquant) seront appliquées.
Des informations supplémentaires sont disponibles dans la documentation :