Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un modulo è un set di funzionalità di Windows PowerShell correlate, raggruppate come unità pratica (in genere salvate in una singola directory). Definendo un set di file di script, assembly e risorse correlate correlati come modulo, è possibile fare riferimento, caricare, rendere persistente e condividere il codice in modo molto più semplice rispetto al contrario.
Lo scopo principale di un modulo è consentire la modularizzazione (ad esempio, riutilizzo e astrazione) del codice di Windows PowerShell. Ad esempio, il modo più semplice per creare un modulo consiste nel salvare semplicemente uno script di Windows PowerShell come file .psm1
. In questo modo è possibile controllare (ad esempio, rendere pubblici o privati) le funzioni e le variabili contenute nello script. Il salvataggio dello script come file .psm1
consente anche di controllare l'ambito di determinate variabili. Infine, è anche possibile usare cmdlet come Install-Module per organizzare, installare e usare lo script come blocchi predefiniti per soluzioni più grandi.
Componenti e tipi del modulo
Un modulo è costituito da quattro componenti di base:
Un tipo di file di codice, in genere uno script di PowerShell o un assembly di cmdlet gestito.
Qualsiasi altro elemento necessario per il file di codice precedente, ad esempio assembly aggiuntivi, file della Guida o script.
Un file manifesto che descrive i file precedenti, nonché archivia i metadati, ad esempio informazioni sull'autore e sul controllo delle versioni.
Una directory che contiene tutto il contenuto precedente e si trova in cui PowerShell può trovarlo ragionevolmente.
Nota
Nessuno di questi componenti, da soli, è effettivamente necessario. Ad esempio, un modulo può essere tecnicamente solo uno script archiviato in un file
.psm1
. È anche possibile avere un modulo che non è altro che un file manifesto, che viene usato principalmente a scopo organizzativo. È anche possibile scrivere uno script che crea in modo dinamico un modulo e, di conseguenza, non richiede effettivamente una directory in cui archiviare alcun elemento. Le sezioni seguenti descrivono i tipi di moduli che è possibile ottenere combinando e associando le diverse parti possibili di un modulo.
Moduli di script
Come suggerisce il nome, un modulo script è un file (.psm1
) che contiene qualsiasi codice di Windows PowerShell valido. Gli sviluppatori e gli amministratori di script possono usare questo tipo di modulo per creare moduli i cui membri includono funzioni, variabili e altro ancora. Un modulo script è semplicemente uno script di Windows PowerShell con un'estensione diversa, che consente agli amministratori di usare funzioni di importazione, esportazione e gestione.
È anche possibile usare un file manifesto per includere altre risorse nel modulo, ad esempio file di dati, altri moduli dipendenti o script di runtime. I file manifesto sono utili anche per tenere traccia dei metadati, ad esempio la creazione e le informazioni sul controllo delle versioni.
Infine, un modulo script, come qualsiasi altro modulo non creato dinamicamente, deve essere salvato in una cartella che PowerShell può ragionevolmente individuare. In genere, si trova nel percorso del modulo di PowerShell; ma, se necessario, è possibile descrivere in modo esplicito dove è installato il modulo. Per altre informazioni, vedere Come scrivere un modulo script di PowerShell.
Moduli binari
Un modulo binario è un assembly .NET Framework (.dll
) che contiene codice compilato, ad esempio C#.
Gli sviluppatori di cmdlet possono usare questo tipo di modulo per condividere cmdlet, provider e altro ancora. Gli snap-in esistenti possono essere usati anche come moduli binari. Rispetto a un modulo script, un modulo binario consente di creare cmdlet più veloci o che usano funzionalità (ad esempio multithreading) che non sono facili da scrivere negli script di Windows PowerShell.
Come per i moduli di script, è possibile includere un file manifesto per descrivere risorse aggiuntive usate dal modulo e tenere traccia dei metadati relativi al modulo. Analogamente, è probabile che sia necessario installare il modulo binario in una cartella in un punto lungo il percorso del modulo di PowerShell. Per altre informazioni, vedere How to How to Write a PowerShell Binary Module.
Moduli manifesto
Un modulo manifesto è un modulo che usa un file manifesto per descrivere tutti i relativi componenti, ma non ha alcun tipo di assembly o script di base. (Formalmente, un modulo manifesto lascia vuoto il ModuleToProcess
o RootModule
elemento del manifesto. Tuttavia, è comunque possibile usare le altre funzionalità di un modulo, ad esempio la possibilità di caricare assembly dipendenti o di eseguire automaticamente determinati script di pre-elaborazione. È anche possibile usare un modulo manifesto come modo pratico per creare un pacchetto di risorse che verranno usate da altri moduli, ad esempio moduli annidati, assembly, tipi o formati. Per altre informazioni, vedere Come scrivere un manifesto del modulo di PowerShell.
Moduli dinamici
Un modulo dinamico è un modulo non caricato da o salvato in un file. Vengono invece creati dinamicamente da uno script usando il cmdlet New-Module. Questo tipo di modulo consente a uno script di creare un modulo su richiesta che non deve essere caricato o salvato in una risorsa di archiviazione permanente. Per natura, un modulo dinamico deve essere di breve durata e pertanto non può essere accessibile dal cmdlet Get-Module
. Analogamente, in genere non hanno bisogno di manifesti del modulo, né hanno probabilmente bisogno di cartelle permanenti per archiviare gli assembly correlati.
Manifesti del modulo
Un manifesto del modulo è un file .psd1
che contiene una tabella hash. Le chiavi e i valori nella tabella hash eseguono le operazioni seguenti:
Descrivere il contenuto e gli attributi del modulo.
Definire i prerequisiti.
Determinare la modalità di elaborazione dei componenti.
I manifesti non sono necessari per un modulo. I moduli possono fare riferimento a file di script (
.ps1
), file di modulo script (.psm1
), file manifesto (.psd1
), formattazione e file di tipo (.ps1xml
), assembly di cmdlet e provider (.dll
), file di risorse, file della Guida, file di localizzazione o qualsiasi altro tipo di file o risorsa incluso nel modulo. Per uno script internazionalizzato, la cartella del modulo contiene anche un set di file di catalogo messaggi. Se si aggiunge un file manifesto alla cartella del modulo, è possibile fare riferimento a più file come una singola unità facendo riferimento al manifesto.Il manifesto stesso descrive le categorie di informazioni seguenti:
Metadati relativi al modulo, ad esempio il numero di versione del modulo, l'autore e la descrizione.
Prerequisiti necessari per importare il modulo, ad esempio la versione di Windows PowerShell, la versione CLR (Common Language Runtime) e i moduli necessari.
Direttive di elaborazione, ad esempio script, formati e tipi da elaborare.
Restrizioni sui membri del modulo da esportare, ad esempio alias, funzioni, variabili e cmdlet da esportare.
Per altre informazioni, vedere Come scrivere un manifesto del modulo di PowerShell.
Archiviazione e installazione di un modulo
Dopo aver creato uno script, un file binario o un modulo manifesto, è possibile salvare il lavoro in una posizione a cui altri utenti possono accedervi. Ad esempio, il modulo può essere archiviato nella cartella di sistema in cui è installato Windows PowerShell oppure può essere archiviato in una cartella utente.
In generale, è possibile determinare dove installare il modulo usando uno dei percorsi archiviati nella variabile $Env:PSModulePath
. Usando uno di questi percorsi, PowerShell può trovare e caricare automaticamente il modulo quando un utente effettua una chiamata al modulo nel codice. Se si archivia il modulo in un'altra posizione, è possibile comunicare in modo esplicito a PowerShell passando il percorso del modulo come parametro quando si chiama Install-Module
.
Indipendentemente dal fatto che il percorso della cartella venga definito base del modulo (ModuleBase) e il nome dello script, del file binario o del modulo manifesto deve corrispondere al nome della cartella del modulo, con le eccezioni seguenti:
I moduli dinamici creati dal cmdlet
New-Module
possono essere denominati usando il parametroName
del cmdlet.I moduli importati dagli oggetti assembly dal comando
Import-Module -Assembly
vengono denominati in base alla sintassi seguente:"dynamic_code_module_" + assembly.GetName()
.Per altre informazioni, vedere Installazione di un modulo di PowerShell e about_PSModulePath.
Cmdlet e variabili del modulo
I cmdlet e le variabili seguenti vengono forniti da Windows PowerShell per la creazione e la gestione dei moduli.
cmdlet di New-Module Questo cmdlet crea un nuovo modulo dinamico esistente solo in memoria. Il modulo viene creato da un blocco di script e i relativi membri esportati, ad esempio le funzioni e le variabili, sono immediatamente disponibili nella sessione e rimangono disponibili fino alla chiusura della sessione.
cmdlet New-ModuleManifest Questo cmdlet crea un nuovo file manifesto del modulo (.psd1
) , popola i relativi valori e salva il file manifesto nel percorso specificato. Questo cmdlet può essere usato anche per creare un modello di manifesto del modulo che può essere compilato manualmente.
cmdlet Import-Module Questo cmdlet aggiunge uno o più moduli alla sessione corrente.
cmdlet Get-Module Questo cmdlet recupera informazioni sui moduli che sono stati o che possono essere importati nella sessione corrente.
cmdlet Export-ModuleMember Questo cmdlet specifica i membri del modulo (ad esempio cmdlet, funzioni, variabili e alias) esportati da un modulo script (.psm1
) o da un modulo dinamico creato usando il cmdlet New-Module
.
cmdlet Remove-Module Questo cmdlet rimuove i moduli dalla sessione corrente.
cmdlet Test-ModuleManifest Questo cmdlet verifica che un manifesto del modulo descriva accuratamente i componenti di un modulo verificando che i file elencati nel file manifesto del modulo (.psd1
) esistano effettivamente nei percorsi specificati.
$PSScriptRoot Questa variabile contiene la directory da cui viene eseguito il modulo script. Consente agli script di usare il percorso del modulo per accedere ad altre risorse.
$Env:PSModulePath Questa variabile di ambiente contiene un elenco delle directory in cui sono archiviati i moduli di Windows PowerShell. Windows PowerShell usa il valore di questa variabile durante l'importazione automatica dei moduli e l'aggiornamento degli argomenti della Guida per i moduli.