Comment désinstaller des programmes à l’aide de PowerShell sous Windows 10 et 11

Désinstaller des logiciels sous Windows peut parfois s’avérer fastidieux, surtout si vous souhaitez automatiser le processus ou le faire à distance. Plusieurs méthodes existent, mais aucune n’est parfaite : chacune a ses particularités. Si vous avez déjà tenté de nettoyer un PC distant ou de créer un script pour désinstaller des applications, vous avez probablement constaté que les méthodes de désinstallation intégrées ne sont pas toujours efficaces, notamment pour les applications UWP, celles du Microsoft Store ou les programmes installés sans le programme d’installation habituel. Ce guide vous propose donc des solutions pratiques et fonctionnelles, ainsi que des conseils tirés de l’expérience, et non de la simple théorie.À la fin, vous maîtriserez mieux la désinstallation de ces applications à l’aide de PowerShell, WMI ou winget, selon la méthode la plus adaptée à votre situation. Il arrive parfois qu’une méthode fonctionnant sur une machine ne fonctionne pas sur une autre ; il est donc toujours utile d’avoir plusieurs astuces sous la main.

Comment résoudre les problèmes de désinstallation d’applications sous Windows : solutions pratiques

Utilisation de WMI pour désinstaller des programmes sous Windows

Voici une méthode classique, mais quelque peu limitée, pour désinstaller des applications. WMI (Windows Management Instrumentation) permet d’obtenir la liste des programmes installés et d’en supprimer certains. Son fonctionnement repose sur son interface directe avec le système Windows Installer. Vous connaissez sans doute la bonne vieille commande wmic ou son équivalent PowerShell. C’est pratique pour automatiser les désinstallations en ligne de commande, notamment pour les applications installées via MSI. Attention cependant : WMI ne reconnaît que les programmes enregistrés dans WMI, ce qui exclut certaines applications installées par l’utilisateur, les navigateurs ou les applications UWP, en particulier celles provenant du Microsoft Store.

Par exemple, pour voir ce qui est installé, vous pouvez exécuter :

wmic product get name, version

Et pour désinstaller un élément, la commande ressemble à ceci :

wmic product where "name='VMware vCenter Converter Standalone'" call uninstall /nointeractive

Notez que, du fait du fonctionnement de WMI sous Windows, cette opération peut parfois échouer silencieusement ou se bloquer. Sur certaines configurations, la première tentative peut ne pas aboutir ; un redémarrage ou une actualisation du référentiel WMI peut parfois résoudre le problème. Enfin, cette solution est idéale pour les applications MSI, mais guère plus.

En utilisant PowerShell, la commande équivalente serait :

Get-WmiObject Win32_Product | Format-Table Name, Version, Vendor

Et pour supprimer une application spécifique :

(Get-WmiObject Win32_Product -Filter "Name='XXX'").Uninstall()

N’oubliez pas : WMI a la fâcheuse tendance à reconfigurer les packages MSI lors de ses requêtes, ce qui peut parfois perturber la liste des programmes installés. De plus, si vous travaillez à distance, vous aurez besoin du paramètre -ComputerName.

Get-WmiObject -Class Win32_Product -ComputerName TARGET-PC | where {$_. Name -Like "Office 16*"} | ForEach-Object { $_. Uninstall() }

Notez que cette méthode ne répertorie généralement que les applications installées via Windows Installer, et omet donc de nombreux outils tiers, navigateurs ou applications UWP. C’est pourquoi elle n’est pas une solution universelle, mais elle mérite d’être essayée si vous utilisez des applications MSI.

Désinstaller des applications sur un ordinateur distant avec la gestion des packages PowerShell

Cette méthode est plus moderne et flexible, notamment sur Windows 10/11 et Server 2016 et versions ultérieures qui intègrent le module de gestion des packages PowerShell. Elle ne se limite plus aux modules : elle permet également de gérer les applications et leurs mises à jour. Le principe consiste à utiliser la cmdlet Get-Package et les cmdlets associées pour lister et supprimer des applications, y compris certaines applications non-MSI.

Pour lister les éléments installés localement, procédez comme suit :

Get-Package

Pour voir quels fournisseurs sont disponibles (comme MSI, programmes, modules PowerShell), exécutez :

Get-PackageProvider

  • Programmes — pour les applications Win32 installées avec MSI
  • MSI — plus précisément les packages MSI
  • Msu — Mises à jour Windows (fichiers *.msu)
  • PowerShellGet — modules de la galerie PowerShell

Une fois que vous avez trouvé ce que vous souhaitez désinstaller, la commande ressemble à ceci :

Get-Package -Name "Notepad++*" | Uninstall-Package

Pour supprimer des modules PowerShell, comme VMware PowerCLI, vous exécuteriez la commande suivante :

Get-Package -ProviderName PowerShellGet -Name "VMware.*" | Uninstall-Package

Si vous effectuez cette opération à distance, il suffit de pinguer la cible avec Invoke-Command comme ceci :

Invoke-Command -ComputerName TARGET-PC -ScriptBlock { Get-Package -Name "Notepad++*" | Uninstall-Package }

N’oubliez pas que WinRM doit être configuré pour l’exécution de PowerShell à distance. Il est parfois désactivé par défaut, notamment sur les machines du domaine ; vous devrez peut-être l’activer via une stratégie de groupe ou manuellement. Par ailleurs, cette méthode convient à certaines applications MSI et modules PowerShell, mais pas aux applications UWP, qui nécessitent une approche différente.

Comment désinstaller des applications avec WinGet

WinGet (le gestionnaire de packages Windows) est un outil précieux pour installer et désinstaller rapidement des logiciels. Intégré à Windows 10/11, il ne nécessite aucun outil supplémentaire. Commencez par lister tous les logiciels installés avec :

winget list

Ceci affiche à la fois les applications traditionnelles (y compris les applications UWP) et certaines applications installées depuis le Microsoft Store, selon les éléments enregistrés auprès de WinGet. Pour désinstaller une application, il suffit de procéder comme suit :

winget uninstall --name 7zip.7zip

Si vous connaissez l’identifiant de l’application, vous pouvez également l’utiliser, comme ceci :

winget uninstall --id "{332C1E78-1D2F-4A64-B718-68095DC6254B}"

Pour les applications UWP, il arrive que WinGet échoue ou ne trouve pas certains éléments s’il n’est pas correctement enregistré. Dans ce cas, il est nécessaire d’utiliser les commandes Remove-AppxPackage ou Remove-AppxProvisionedPackage depuis PowerShell, ce qui est un peu plus complexe.

Exécuter winget à distance n’est pas simple : il faut configurer la communication à distance PowerShell et exécuter la commande dans une session distante, comme ceci :

Invoke-Command -ComputerName Target-PC -ScriptBlock { winget uninstall --name 7zip.7zip }

Comme de nombreux outils de gestion à distance, il n’est pas idéal dans tous les cas de figure, mais il est très pratique pour automatiser les déploiements ou les nettoyages sur plusieurs machines.

En résumé, le choix de la méthode dépend du type d’applications : installateurs MSI, applications du Microsoft Store ou applications Win32 classiques. Aucune solution n’est parfaite, mais combiner ces approches permet généralement d’obtenir le résultat escompté. Dans certains cas, un redémarrage, une actualisation du référentiel WMI ou la réinstallation de WinRM peuvent s’avérer nécessaires. N’oubliez pas que Windows a souvent tendance à compliquer les choses inutilement.

Résumé

  • Utilisez wmic pour désinstaller les applications basées sur MSI, mais soyez conscient de ses limitations.
  • Tirez parti de la gestion des packages PowerShell pour un contrôle plus étendu des applications, y compris les applications UWP et celles du Microsoft Store.
  • Essayez WinGet lorsque c’est possible ; il est intégré et très simple d’utilisation dans de nombreux cas.
  • La désinstallation à distance est délicate : n’oubliez pas d’activer WinRM et d’utiliser Invoke-Command.

Conclure

Désinstaller des programmes sous Windows n’est pas toujours simple, surtout lorsqu’on essaie de le faire à distance ou d’automatiser le processus. Ces méthodes couvrent la plupart des cas courants, mais certaines applications plus spécifiques nécessitent souvent un peu plus d’interventions manuelles ou des outils différents. En résumé, il s’agit d’adapter la méthode à ses besoins, mais connaître ces techniques devrait s’avérer utile dans la plupart des situations. Espérons que cela permettra à certains de gagner du temps ou, au moins, de trouver la bonne solution.