Mi capita spesso di provare nuovi moduli di PowerShell, per scoprirne le funzioni, e, come per i programmi installati, a un certo punto decido che non mi servono, o che non fanno quanto speravo, e li disinstallo. Vediamo come ottenere la lista di tutti i moduli di PowerShell installati e eliminare quelli che non servono più.
Moduli installati
Il cmdlet per ottenere la lista dei moduli installati manualmente, con Install-Module, da un repository come la PowerShell Gallery è: Get-InstalledModule

La lista completa di tutti i moduli di PowerShell è molto più lunga e la possiamo ottenere con il comando: Get-Module -ListAvailable|select name,version,path

Si possono rimuovere singoli moduli Uninstall-Module -Name Evergreen, oppure a gruppi, separando i vari Name dei moduli con una virgola Uninstall-Module -Name MSCatalogLTS,PSWindowsUpdate,WinEOL.

Può capitare anche di installare una versione più aggiornata dello stesso modulo, ma in genere non sovrascrive la più vecchia ma vi si affianca. Con Get-Module TeamViewerPS -ListAvailable è possibile vedere la lista delle versioni presenti per un determinato modulo.

Per eliminare quella più vecchia, o che non ci interessa, basta usare questo comando Uninstall-Module -Name TeamViewerPS -RequiredVersion 2.3.0 indicando il numero di versione da rimuovere.

Invece con Uninstall-Module -Name TeamViewerPS -AllVersions possiamo rimuovere tutte le versioni presenti di questo modulo.

Moduli in uso
In fase di disinstallazione si potrebbe ottenere un errore perché il modulo è in uso nella sessione corrente di PowerShell. Lo si può scaricare dalla memoria per poi disinstallarlo, con Get-module vediamo quali sono i moduli attivi e con Remove-Module -name NomeModulo lo chiudiamo.

Elementi non cancellati
Dopo la disinstallazione dei moduli potrebbero avanzare dei residui nella cartella che li conteneva, in particolare in Documenti\PowerShell\Modules, che vanno rimossi manualmente. Per sapere quali sono le cartelle che contengono i moduli si può utilizzare $env:PSModulePath.
