PowerShell 101: Importare Moduli

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/