Più appunti sparsi che vero articolo. Sono comandi PowerShell utili ai quali spesso faccio appello ma che in alcuni casi potrei dimenticare “per disabitudine” (dubito, ma vabbè) o che possono tornare comodi a te che stai leggendo e che magari mi hai trovato con una ricerca su Internet.
Inizio con i moduli, modificherò e aggiornerò in seguito l’articolo per includere nuovi comandi / consigli.
L’invito a prescindere dagli appunti è sempre quello di usare la versione più aggiornata del software di Microsoft che puoi trovare direttamente su GitHub all’indirizzo github.com/PowerShell/PowerShell/releases. Nell’articolo farò sempre riferimento a $NomeModulo
per indicare quello che dovrai sostituire con il reale nome del modulo interessato dalle azioni di installazione / disinstallazione.
Installazione moduli
Spesso non vivi senza. La cosa più naturale che puoi richiamare è il classico Install-Module $NomeModulo
, partirà così la ricerca in galleria Microsoft (powershellgallery.com) e ti verrà permessa l’installazione ammesso la ricerca abbia dato risultati, ti verrà giusto richiesto se vuoi procedere realmente con l’installazione se la fonte non è stata precedentemente messa tra quelle affidabili, poco male.
Puoi però decidere di effettuare l’installazione per tutti gli utilizzatori del PC (magari sei l’unico, e allora va benone così) o forzare l’aggiornamento di un modulo già precedentemente installato, e allora:
Install-Module -Name $NomeModulo -Scope AllUsers -Force -AllowClobber
Lo Scope AllUsers
ti permetterà di installare il modulo per qualsiasi utente del PC utilizzi PowerShell, il Force
forzerà il nuovo download (e quindi aggiornamento) del modulo anche se già installato in diversa versione e infine il AllowClobber
permetterà di sopprimere i vari messaggi di attenzione che dovesse presentarti la PowerShell durante la fase di scaricamento e installazione.
Tutto questo è documentato ampiamente all’interno del sito web di Microsoft all’indirizzo learn.microsoft.com/en-us/powershell/module/powershellget/install-module?view=powershell-7.3.
Ricorda che puoi sempre verificare le possibili destinazioni dei file dei moduli che hai installato / andrai a installare semplicemente lanciando in PowerShell un $env:PSModulePath.Split(';')
. Se invece vuoi conoscere i moduli installati (a prescindere dalla loro posizione in cartella / su utente corrente o su tutti gli utenti della macchina in uso) ti basterà eseguire un Get-InstalledModule
.
Installazione manuale
Nel caso in cui dovessi avere problemi nell’installazione automatica dei moduli via PowerShell potrai sempre scaricare quelli che ti servono e installarli manualmente. C’è un articolo che ti spiega una procedura tutt’oggi valida, lo trovi all’indirizzo randomnote1.github.io/powershell/manually-install-module-from-the-powershell-gallery.
Disinstallazione moduli
Svariati modi per arrivare allo stesso risultato, anch’esso figlio di un comando semplice da impartire alla PowerShell. Ricorda però che le cose cambiano notevolmente in base a chi ha installato in origine il modulo e se lo ha fatto per singolo utente o per tutti gli utenti del PC in uso.
La disinstallazione semplice di un modulo può essere richiamata con:
Uninstall-Module $NomeModulo -Force -Verbose
Questa strada è percorribile solo se il modulo è stato installato dall’utente in uso. Diversa è la questione se l’installazione è stata eseguita da un amministratore. In tal caso sarà necessario lanciare una finestra amministrativa di PowerShell e usare il comando sopra riportato, questo permetterà di fare pulizia del modulo per tutti gli utenti del PC.
L’equivalente comando, partendo però dalla ricerca del modulo interessato, è il seguente:
Get-InstalledModule $NomeModulo | Uninstall-Module -Force -Verbose
Se però la disinstallazione interessa più versioni dello stesso modulo, allora sarà necessario chiedere a PowerShell di fare piazza pulita di ogni versione conservata sulla macchina in uso, per farlo ti basterà lanciare un:
Uninstall-Module $NomeModulo -AllVersions -Force -Verbose
Diversa è la questione nel caso di disinstallazione di specifica versione, questo richiederà di specificare il parametro RequiredVersion per identificarne una e una sola:
Uninstall-Module $NomeModulo -RequiredVersion 1.5.0 -Force -Verbose
Disinstallazione manuale
Soluzione brutta e sporca ma funzionante è quella di andare a rimuovere completamente le cartelle contenenti gli script necessari al modulo, ovviamente dopo aver “smontato” gli stessi da PowerShell. Il metodo è assolutamente da considerarsi “ultima spiaggia” e non andrebbe mai utilizzato. Pensalo come un “in caso di emergenza rompere il vetro“.
In caso di dubbi, lo sai già, l’area commenti è a tua disposizione :-)
#StaySafe
L'articolo potrebbe non essere aggiornato
Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)