Comment supprimer les anciens modules PowerShell (inutilisés)

/fr/images/get-installedmodule-list-the-installed-third-pa.png

Cet article explique comment supprimer en toute sécurité un module PowerShell installé sur un ordinateur Windows. Cela peut être nécessaire pour désinstaller des modules anciens ou inutilisés, résoudre des problèmes de démarrage lent de PowerShell ou résoudre des conflits de modules.

Utilisez cette commande pour répertorier les modules PowerShell tiers installés sur un ordinateur via des référentiels enregistrés.

Obtenir-InstalledModule

/fr/images/get-installedmodule-list-the-installed-third-pa.png.webp

Cette commande répertorie les modules PowerShell tiers installés et enregistrés via l’applet de commande Install-Module. Dans mon cas, tous les modules PS sont installés via le référentiel PSGallery.

Pour supprimer un module installé, spécifiez son nom dans la commande Uninstall-Module. Par exemple :

Nom du module de désinstallation PSWindowsUpdate

Un ordinateur peut avoir plusieurs versions du module installées. Par conséquent, cette applet de commande supprimera la version la plus récente du module ou échouera si plusieurs versions sont trouvées. Les versions disponibles du module peuvent être affichées comme suit :

Get-Module pswindowsupdate-ListAvailable

/fr/images/get-module-listavailable-list-the-module-verio.png.webp

Pour désinstaller une version de module spécifique

Désinstallation-Module-Nom PSWindowsUpdate-RequiredVersion 2.2.1.4-Verbose

Supprimez toutes les versions d’un module spécifique, à l’exception de la dernière.

` $moduleName=“PSWindowsUpdate”$versions=Get-InstalledModule-Name $moduleName-AllVersions | Trier la version de l’objet par ordre décroissant

$versions | Sélectionner-Objet-Sauter 1 | ForEach-Object { Uninstall-Module-Name $moduleName-RequiredVersion $_.Version-Force } `

Supprimez toutes les versions du module :

Désinstallation-Module-Nom PSWindowsUpdate-AllVersions

L’applet de commande Invoke-Command peut être utilisée pour supprimer le module PowerShell sur un ordinateur distant :

Invoke-Command-ComputerName mun-dc01-ScriptBlock {Désinstallation-Module PSWindowsUpdate-RequiredVersion 2.2.1.2-Force-Verbose}

Lors de la désinstallation d’un module, une erreur peut apparaître indiquant que le module est en cours d’utilisation.


WARNING: The version '2.2.1.4' of module 'PSWindowsUpdate' is currently in use. Retry the operation after closing the applications.PackageManagement\Uninstall-Package : Module 'PSWindowsUpdate' is in currently in use or you don't have the required permissions.

/fr/images/uninstall-module-error-module-is-currently-in-us.png.webp

Pour supprimer un tel module, fermez d’abord la session PowerShell dans laquelle il a été chargé (importé). Lister les modules PS chargés dans la session en cours :

Obtenir-Module

Pour décharger un module de la mémoire sans fermer la console PS actuelle, exécutez la commande suivante :

Supprimer le nom du module PSWindowsUpdate

/fr/images/remove-module-unload-specific-powershell-module.png.webp

Essayez à nouveau de supprimer le module après cela (dans certains cas, vous devez ajouter l’option-Force pour forcer la suppression du module, mais soyez prudent, car cela peut rompre les dépendances des autres modules) :

Désinstallation-Module-Nom PSWindowsUpdate-Force

Si le module que vous souhaitez désinstaller se charge automatiquement lorsque vous ouvrez une session PowerShell, vous pouvez contourner cela en lançant la console PowerShell sans charger vos fichiers de profil PS1 :

Powershell.exe-NoProfile-Command "Désinstallation-Module ImportExcel"

La liste complète de tous les modules PowerShell disponibles sur un ordinateur (y compris ceux installés via le référentiel et ceux installés manuellement) peut être affichée comme suit :

Get-Module-ListAvailable|sélectionnez le nom, la version, le chemin

/fr/images/get-module-listavailable-list-all-modules-inclu.png.webp

La colonne Chemin indique où se trouvent les fichiers du module. Dans Windows PowerShell, vous pouvez utiliser (importer) des modules qui ont été installés (copiés) dans les répertoires suivants :


C:\Users\%username%\Documents\WindowsPowerShell\ModulesC:\Program Files\WindowsPowerShell\ModulesC:\Windows\system32\WindowsPowerShell\v1.0\Modules

Vous pouvez trouver cette liste de chemins dans la variable d’environnement $env:PSModulePath :

/fr/images/dollarenvpsmodulepath-in-windows-powershell-5-1.png.webp

Dans PowerShell Core 7.x, la variable $env:PSModulePath inclut les chemins supplémentaires suivants :


C:\program files\windowsapps\microsoft.powershell_7.5.2.0_x64__8wekyb3d8bbwe\ModulesC:\Program Files\PowerShell\ModulesC:\program files\powershell\7\Modules

/fr/images/dollarenvpsmodulepath-paths-in-powershell-core-7-x.png.webp

Les fichiers résiduels peuvent rester dans le répertoire du module après la désinstallation. Ces fichiers doivent être supprimés manuellement. Ce script PS, par exemple, désinstallera un module et effacera le contenu de son dossier si le dossier n’est pas vide.

` $Module=Get-Module ImportExcel-ListAvailable

Désinstallation du module $Module.Name-verbose

Remove-Item $Module.ModuleBase-Recurse-Force `

*️⃣ Lien source :

Problèmes de démarrage lent de PowerShell, PSWindowsUpdate, Invoke-Command, installé manuellement,