Ldfa Posté(e) il y a 20 heures Posté(e) il y a 20 heures IT-Connect Publié le 29 janvier 2026 Par Florian BURNEL it-connect.fr Environ 7 minutes de lecture 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 winget install <nom du paquet> 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 winget configure <fichier YAML>. 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. 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 .yaml (ou .yml). Dans la suite de cet article, nous créerons le fichier suivant : winget-dsc-windows11.yaml. Dans sa documentation, Microsoft évoque aussi l'extension .winget. Ce fichier doit commencer par une ligne précisant le schéma de configuration utilisé. Soit cette ligne : # yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2 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 : winget configure --enable Enabling extended features. Requires store access. ██████████████████████████████ 100% Cette étape préparatoire débloque les fonctionnalités de la commande winget configure que nous utiliserons par la suite pour appliquer la configuration. Construire le fichier de configuration WinGet Désormais, nous allons construire le fichier winget-dsc-windows11.yaml 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 EnablePeriodicBackup 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 : winget search <nom du logiciel> winget search powertoys Vous devez ensuite repérer la valeur de la colonne ID correspondante à l'application à installer. Ici, ce serait la première ligne avec l'ID est XP89DCGQ3K6VLD et la source est msstore. 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 resources, l'identifiant de chaque bloc (id) est une valeur personnalisable. # yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2 properties: assertions: - resource: Microsoft.Windows.Developer/OsVersion directives: description: Verify min OS version requirement (Windows 11 24H2) allowPrerelease: true settings: MinVersion: '10.0.26100' resources: - resource: Microsoft.WinGet.DSC/WinGetPackage id: Package.VLC directives: description: Installation de Media Player securityContext: elevated settings: id: VideoLAN.VLC source: winget - resource: Microsoft.WinGet.DSC/WinGetPackage id: Package.7Zip directives: description: Installation de 7-Zip securityContext: elevated settings: id: 7zip.7zip source: winget - resource: Microsoft.WinGet.DSC/WinGetPackage id: Package.Firefox directives: description: Installation de Mozilla Firefox ESR securityContext: current settings: id: Mozilla.Firefox.ESR.fr source: winget - resource: Microsoft.WinGet.DSC/WinGetPackage id: Package.PowerToys directives: description: Installation de PowerToys securityContext: current settings: id: XP89DCGQ3K6VLD source: msstore - resource: PSDscResources/Registry id: Registry.RegBackup directives: description: Activation de la sauvegarde automatique du Registre securityContext: elevated settings: Key: 'HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Configuration Manager' ValueName: 'EnablePeriodicBackup' ValueData: 1 ValueType: Dword Ensure: Present Force: true - resource: Microsoft.Windows.Developer/WindowsExplorer directives: description: Modify Windows Explorer settings allowPrerelease: true settings: FileExtensions: Show HiddenFiles: Hide RestartExplorer: True - resource: Microsoft.Windows.Developer/Taskbar directives: description: Modify taskbar settings allowPrerelease: true settings: Alignment: Left SearchBoxMode: ShowIconAndLabel TaskViewButton: Show WidgetsButton: Hide - resource: PSDscResources/Script id: PowerShell.SourcesFolder directives: description: Création du dossier C:\sources securityContext: elevated allowPrerelease: true settings: # GetScript : Retourne l'état actuel (Obligatoire, sinon la ressource retourne une erreur) GetScript: | $exist = Test-Path 'C:\sources' return @{ Result = if ($exist) { "Present" } else { "Absent" } } # TestScript : Vérifie si le dossier existe déjà. # Renvoie $true si le dossier est là (ne rien faire). # Renvoie $false si le dossier manque (lancer le SetScript). TestScript: | return (Test-Path 'C:\sources') # SetScript : La commande de création (exécutée uniquement si TestScript = $false) SetScript: | New-Item -Path 'C:\sources' -ItemType Directory -Force configurationVersion: 0.2.0 Il y a des directives communes, notamment : description : utile pour documenter votre configuration et faciliter l'interprétation. securityContext: elevated : pour lancer l'action avec des privilèges administrateur, ce qui est essentiel pour certaines installations de logiciels ou configuration. allowPrerelease: true : autoriser ou non la configuration à utiliser des modules en préversion. Nécessaire actuellement pour certains modules. À la fin, la ligne configurationVersion: 0.2.0 indique la version à utiliser pour lire la configuration. Valider la configuration WinGet La commande winget configure contient plusieurs sous-commandes (voir cette page), dont celle nommée validate 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 : winget configure validate <nom du fichier de configuration> winget configure validate winget-dsc-windows11.yaml La validation n’a détecté aucun problème. 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 Registry comme nom de ressource à la place de PSDscResources/Registry, 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 : winget configure --file winget-dsc-windows11.yaml --accept-configuration-agreements 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 : WinGet DSC - Configuration - Documentation Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture. Afficher l’article complet
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant