Hai mai eseguito un comando PowerShell e ricevuto il temuto messaggio di errore “Il termine non è riconosciuto come nome di un cmdlet”? Ecco il punto dolente: il problema potrebbe essere semplicemente un modulo mancante o non importato. Anche nelle versioni moderne di PowerShell, comprendere come funzionano i moduli è fondamentale per diagnosticare e risolvere questi problemi.
La buona notizia? Questa guida copre tutto, dal controllo dei moduli attualmente importati da PowerShell alla padronanza dell’importazione, rimozione e ri-importazione degli stessi. Alla fine, acquisirai competenze nella gestione fluida dei moduli di PowerShell, sia che tu stia risolvendo errori inaspettati sia che tu stia lavorando su moduli personalizzati.
Immergiti e lascia che i moduli di PowerShell ti aiutino ad ottimizzare il tuo flusso di lavoro con fiducia!
Controllo dei Moduli Importati
I comandi PowerShell possono fallire con messaggi di errore criptici quando i moduli non vengono caricati correttamente. Ad esempio, provare a eseguire Get-ADUser senza prima importare il modulo ActiveDirectory causerà un errore “comando non trovato”. Allo stesso modo, tentare di utilizzare i comandi di Azure richiede che il modulo Az sia presente nella sessione.
PowerShell deve importare il modulo rilevante per garantire che i comandi funzionino come previsto e rendere disponibili i suoi comandi.
Per visualizzare i moduli attualmente importati, utilizza:
Get-Module
Quando esegui Get-Module, vedrai un output simile a questo:
ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content, Checkpoint-Computer...} Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type, Clear-Variable...} Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler, Get-PSReadLineOption...} Binary 1.0.0.1 SmbShare {Get-SmbShare, Set-SmbShare, Remove-SmbShare...}
Questo visualizza un elenco di tutti i moduli attualmente caricati nella tua sessione di PowerShell, mostrando il loro tipo (Manifest, Script o Binario), numero di versione, nome del modulo e un riepilogo dei comandi che forniscono. La colonna ExportedCommands mostra quali cmdlet sono disponibili da ciascun modulo.
Successivo, esamina i comandi da un modulo che puoi importare:
Get-Module -Name SmbShare -ListAvailable | Select exportedcommands
Quando esegui questo comando, vedrai in output un elenco di tutti i comandi disponibili nel modulo SmbShare. Per esempio:
ExportedCommands ---------------- {Get-SmbShare, New-SmbShare, Remove-SmbShare, Set-SmbShare, Get-SmbShareAccess, Grant-SmbShareAccess, Block-SmbShareAccess, Revoke-SmbShareAccess, Get-SmbMapping}
Questo output mostra tutti i cmdlet che puoi utilizzare dal modulo SmbShare. Ciascun comando serve uno scopo specifico per gestire le condivisioni SMB:
- Get-SmbShare: Elenca tutte le condivisioni SMB nel sistema
- New-SmbShare: Crea una nuova condivisione SMB
- Remove-SmbShare: Elimina una condivisione SMB esistente
- Set-SmbShare: Modifica le proprietà di una condivisione esistente
Comprendere quali comandi sono disponibili ti aiuta a scegliere lo strumento giusto per il tuo compito. Puoi utilizzare comandi simili per esplorare le capacità di altri moduli.
Importazione automatica dei moduli
Per vedere come PowerShell gestisce dinamicamente i moduli, ecco un esempio che mostra il caricamento dinamico del modulo:
PS> Get-Module ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content...} Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type...} Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler...} PS> Get-SmbShare PS> Get-Module ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content...} Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type...} Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler...} Binary 1.0.0.1 SmbShare {Get-SmbShare, Set-SmbShare...}
Come mostrato sopra, quando esegui Get-SmbShare, PowerShell importa automaticamente il modulo SmbShare. Puoi vedere che questo modulo compare nell’elenco dopo aver eseguito il comando.
Rimuovere e reinserire i moduli
Potresti dover cancellare un modulo dalla memoria, ad esempio quando testi nuove configurazioni o risolvi conflitti. In tal caso, niente paura; PowerShell ti consente di rimuovere un modulo senza disinstallarlo, consentendoti di ripristinare o aggiornare la sessione secondo necessità.
Per rimuovere un modulo dalla memoria:
Remove-Module -Name SmbShare
Il cmdlet Remove-Module
svuota il modulo dalla memoria ma non lo disinstalla dal sistema. Sebbene la rimozione dei moduli sia rara nell’uso quotidiano, è utile per scenari specifici.
Per importare manualmente il modulo di nuovo:
Import-Module -Name SmbShare
L’importazione manuale può essere utile durante la risoluzione dei problemi o lavorando in ambienti personalizzati.
Re-importazione dei Moduli Dopo le Modifiche
Quando si lavora su un modulo in fase di sviluppo, si possono incontrare situazioni in cui le modifiche apportate non hanno effetto immediato. Dati o configurazioni obsolete possono ancora essere caricati nel modulo, causando questo comportamento.
Re-importare il modulo assicura che PowerShell utilizzi l’ultima versione. Se modifichi un modulo che stai sviluppando, devi re-importarlo.
Puoi utilizzare sia Remove-Module
che Import-Module
oppure semplificare il processo con il parametro Force
:
Import-Module -Name SmbShare -Force
Il parametro Force
scarica e ricarica il modulo in un solo passaggio, rendendolo ideale per i flussi di lavoro di sviluppo e test.
Conclusione
In questa guida, hai imparato a gestire i moduli di PowerShell: controllare le importazioni e importare, rimuovere e re-importare moduli. Hai anche esplorato come PowerShell importa dinamicamente i moduli e come controllare il caricamento per risolvere problemi o testare manualmente configurazioni personalizzate.
Ora, applica queste competenze sperimentando con moduli personalizzati nei tuoi script. Esplora lo sviluppo di moduli e utilizza il parametro Force
per garantire che le modifiche abbiano effetto.
Migliora la risoluzione dei problemi, lo sviluppo degli script e il flusso di lavoro complessivo di PowerShell con i moduli di PowerShell!
Source:
https://adamtheautomator.com/powershell-modules-guide-2/