about_Modules

Aggiornamento: maggio 2014

Si applica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

ARGOMENTO

about_Modules

DESCRIZIONE BREVE

Questo argomento illustra come installare, importare e usare i moduli di Windows PowerShell.

DESCRIZIONE LUNGA

Un modulo è un pacchetto che contiene i comandi di Windows PowerShell, ad esempio cmdlet, provider, funzioni, flussi di lavoro, variabili e alias.

Chi scrive comandi può usare i moduli per organizzarli e condividerli con altri. Chi riceve i moduli può aggiungere i comandi contenuti alle proprie sessioni di Windows PowerShell e usarli allo stesso modo dei comandi predefiniti.

Questo argomento illustra come usare i moduli di Windows PowerShell. Per informazioni su come scrivere i moduli di Windows PowerShell, vedere l'articolo "Scrivere un modulo di Windows PowerShell" in MSDN Library all'indirizzo https://go.microsoft.com/fwlink/?LinkId=144916.

CHE COS'È UN MODULO?

Un modulo è un pacchetto di comandi. Tutti i cmdlet e provider della sessione vengono aggiunti mediante un modulo o uno snap-in.

NOVITÀ DEI MODULI: CARICAMENTO AUTOMATICO DEI MODULI

A partire da Windows PowerShell 3.0, Windows PowerShell importa i moduli automaticamente la prima volta che si esegue qualsiasi comando in un modulo installato. È ora possibile eseguire i comandi di un modulo senza specificare impostazioni o configurazioni del profilo, quindi non è necessario gestire i moduli dopo averli installati nel computer.

I comandi di un modulo sono inoltre più facili da trovare. Il cmdlet Get-Command ottiene ora tutti i comandi in tutti i moduli installati, anche se non sono ancora presenti nella sessione, quindi è possibile trovare ed eseguire un comando senza importarlo.

Tutti i comandi seguenti importano un modulo nella sessione.

        #Run the command
        Get-Mailbox –Identity Chris  

        #Get the command
        Get-Command Get-Mailbox

        #Get help for the command
        Get-Help Get-Mailbox

I comandi Get-Command che includono un carattere jolly (*) sono per l'individuazione non per l'uso, quindi non importano moduli.

Vengono importati automaticamente solo i moduli archiviati nel percorso specificato dalla variabile di ambiente PSModulePath. I moduli archiviati in altri percorsi devono essere importati eseguendo il cmdlet Import-Module.

Inoltre, i comandi che usano i provider di Windows PowerShell non importano automaticamente un modulo. Ad esempio, se si usa un comando che richiede l'unità WSMan:, ad esempio il cmdlet Get-PSSessionConfiguration, potrebbe essere necessario eseguire il cmdlet Import-Module per importare il modulo Microsoft.WSMan.Management che include l'unità WS-Management .

È comunque possibile eseguire il comando Import-Module per importare un modulo e usare la variabile $PSModuleAutoloadingPreference per abilitare, disabilitare e configurare l'importazione automatica di moduli. Per altre informazioni, vedere about_Preference_Variables.

COME USARE UN MODULO

Per usare un modulo, eseguire le attività seguenti:

1. Installare il modulo. (Questa operazione viene in genere eseguita automaticamente).

2. Trovare i comandi aggiunti dal modulo.

3. Usare i comandi aggiunti dal modulo.

Questo argomento illustra come eseguire queste attività. Include inoltre altre informazioni utili sulla gestione dei moduli.

COME INSTALLARE UN MODULO

Se si riceve un modulo come cartella contenente file, è necessario installarlo nel computer prima di poterlo usare in Windows PowerShell.

La maggior parte dei moduli viene installata automaticamente. Windows PowerShell è dotato di diversi moduli preinstallati, denominati anche i moduli "principali". Nei computer basati su Windows, se le funzionalità incluse con il sistema operativo dispongono di cmdlet di gestione, tali moduli sono preinstallati. Quando si installa una funzionalità di Windows usando, ad esempio, Aggiunta guidata ruoli e funzionalità in Gestione server oppure la casella di controllo Attivazione o disattivazione delle funzionalità Windows del Pannello di controllo, vengono installati tutti i moduli di Windows PowerShell che fanno parte della funzionalità. Molti altri moduli sono disponibili in un programma di installazione che li installa.

Per installare una cartella di moduli:

1. Creare una directory Modules per l'utente corrente, se non ne esiste già una.

Per creare una directory Modules, digitare:

               New-Item -Type Directory -Path $home\Documents\WindowsPowerShell\Modules

2. Copiare l'intera cartella di moduli nella cartella Modules.

È possibile usare qualsiasi metodo per copiare la cartella, inclusi Esplora risorse e Cmd.exe, nonché Windows PowerShell.

In Windows PowerShell usare il cmdlet Copy-Item. Ad esempio, per copiare la cartella MyModule da C:\ps-test\MyModule nella directory Modules, digitare:

               Copy-Item -Path c:\ps-test\MyModule -Destination $home\Documents\WindowsPowerShell\Modules

Un modulo può essere installato in qualsiasi percorso, ma risulta più facilmente gestibile se installato nel percorso predefinito. Per altre informazioni sui percorsi predefiniti dei moduli, vedere la sezione "PERCORSI DEI MODULI, DELLA RISORSA DSC E PSMODULEPATH".

COME TROVARE I MODULI INSTALLATI

Per trovare i moduli installati nel percorso predefinito, ma non ancora importati nella sessione, digitare:

         Get-Module -ListAvailable

Per trovare i moduli già importati nella sessione, al prompt di Windows PowerShell digitare:

         Get-Module

Per altre informazioni sul cmdlet Get-Module, vedere Get-Module.

COME TROVARE I COMANDI IN UN MODULO

Per trovare tutti i comandi disponibili, usare il cmdlet Get-Command. È possibile usare i parametri del cmdlet Get-Command per filtrare i comandi, ad esempio in base a modulo, nome e sostantivo.

Per trovare tutti i comandi di un modulo, digitare:

        Get-Command -Module <module-name>

Ad esempio, per trovare i comandi del modulo BitsTransfer, digitare:

        Get-Command -Module BitsTransfer

Per altre informazioni sul cmdlet Get-Command, vedere Get-Command.

COME VISUALIZZARE LA GUIDA PER I COMANDI DI UN MODULO

Se il modulo contiene file della Guida per i comandi che esporta, il cmdlet Get-Help visualizza i relativi argomenti. Usare il comando Get-Help nello stesso formato che si userebbe per visualizzare la Guida di qualsiasi comando di Windows PowerShell.

A partire da Windows PowerShell 3.0, è possibile scaricare i file della Guida per un modulo e i relativi aggiornamenti, in modo che non diventino mai obsoleti.

Per visualizzare la Guida per un comando di un modulo, digitare:

        Get-Help <command-name> 

Per visualizzare la Guida online per i comandi di un modulo, digitare:

        Get-Help <command-name> -Online 

Per scaricare e installare i file della Guida per i comandi di un modulo, digitare:

        Update-Help –Module <module-name>

Per altre informazioni, vedere Get-Help e Update-Help.

COME IMPORTARE UN MOUDLO

A volte può essere necessario importare un modulo o un file di moduli. L'importazione è necessaria se un modulo non viene installato nei percorsi specificati dalla variabile di ambiente PSModulePath ($env:PSModulePath) oppure se è costituito da file, ad esempio con estensione dll o psm1, a differenza dei tipici moduli resi disponibili come cartella.

Si può anche scegliere di importare un modulo in modo da poter usare i parametri del comando Import-Module, ad esempio il parametro Prefix, che aggiunge un prefisso distintivo ai nomi di tutti i comandi importati, oppure il parametro NoClobber, che impedisce al modulo di aggiungere comandi che nasconderebbero o sostituirebbero gli attuali comandi della sessione.

Per importare i moduli, usare il cmdlet Import-Module.

Per importare moduli in un percorso PSModulePath nella sessione corrente, usare il comando nel formato seguente.

        Import-Module <module-name>
    

Ad esempio, il comando seguente importa il modulo BitsTransfer nella sessione corrente.

        Import-Module BitsTransfer

Per importare un modulo che non si trova nel percorso predefinito, usare il percorso completo della cartella di moduli nel comando.

Ad esempio, per aggiungere nella sessione il modulo TestCmdlets disponibile nella directory C:\ps-test, digitare:

        Import-Module c:\ps-test\TestCmdlets

Per importare un file di modulo non contenuto in una cartella di moduli, usare il percorso completo di tale file nel comando.

Ad esempio, per aggiungere nella sessione il modulo TestCmdlets.dll disponibile nella directory C:\ps-test, digitare:

        Import-Module c:\ps-test\TestCmdlets.dll

Per altre informazioni sull'aggiunta di moduli nella sessione, vedere Import-Module.

COME IMPORTARE UN MODULO IN OGNI SESSIONE

Il comando Import-Module importa i moduli nella sessione corrente di Windows PowerShell. Questo comando ha effetto solo nella sessione corrente.

Per importare un modulo in tutte le sessioni di Windows PowerShell avviate, aggiungere il comando Import-Module al profilo di Windows PowerShell.

Per altre informazioni sui profili, vedere about_Profiles.

COME RIMUOVERE UN MODULO

Quando si rimuove un modulo, i comandi che ha aggiunto vengono eliminati dalla sessione.

Per eliminare un modulo della sessione, usare il formato di comando seguente.

        Remove-Module <module-name>

Ad esempio, il comando seguente elimina il modulo BitsTransfer dalla sessione corrente.

        Remove-Module BitsTransfer

La rimozione di un modulo inverte l'operazione di importazione. I moduli rimossi non vengono disinstallati. Per altre informazioni sul cmdlet Remove-Module, vedere Remove-Module.

PERCORSI DEI MODULI, DELLA RISORSA DSC E PSMODULEPATH

Di seguito sono riportati i percorsi predefiniti per i moduli di Windows PowerShell. A partire da Windows PowerShell 4.0, che include DSC, vengono introdotti un nuovo modulo predefinito e la cartella relativa alla risorsa DSC. Per altre informazioni su DSC, vedere about_DesiredStateConfiguration.

Sistema:

I moduli di sistema $pshome\Modules (%windir%\System32\WindowsPowerShell\v1.0\Modules) sono quelli forniti con Windows e Windows PowerShell.

A partire da Windows PowerShell 4.0, quando è stato introdotto DSC di Windows PowerShell, le risorse DSC incluse con Windows PowerShell vengono archiviate anche in $pshome\Modules, all'interno della cartella $pshome\Modules\PSDesiredStateConfiguration\DSCResources.

Utente corrente:

$home\Documents\WindowsPowerShell\Modules (%UserProfile%\Documents\WindowsPowerShell\Modules)

- oppure -

$home\My Documents\WindowsPowerShell\Modules (%UserProfile%\My Documents\WindowsPowerShell\Modules). Si tratta del percorso relativo ai moduli aggiunti dall'utente prima del rilascio di Windows PowerShell 4.0.

In Windows PowerShell versioni 4.0 e nelle versioni successive di Windows PowerShell, i moduli e le risorse DSC aggiunte dall'utente vengono archiviati in C:\Programmi\WindowsPowerShell\Modules. Tutti gli utenti del computer possono accedere ai moduli e alle risorse DSC presenti in questo percorso. Questa modifica è stata necessaria poiché il motore DSC viene eseguito come sistema locale e non era in grado di accedere a percorsi specificati dall'utente, ad esempio, $home\Documents\WindowsPowerShell\Modules.

Nota:

per aggiungere o cambiare i file nella directory %Windir%\System32, avviare Windows PowerShell con l'opzione "Esegui come amministratore".

È possibile cambiare i percorsi predefiniti dei moduli nel sistema modificando il valore della variabile di ambiente PSModulePath ($Env:PSModulePath). La variabile di ambiente PSModulePath è basata sulla variabile di ambiente Path e ha lo stesso formato.

Per visualizzare i percorsi predefiniti dei moduli, digitare:

        $env:psmodulepath

Per aggiungere un percorso predefinito per i moduli, usare il comando nel formato seguente.

        $env:psmodulepath = $env:psmodulepath + ";<path>"

Il punto e virgola (;) nel comando separa il nuovo percorso da quello che lo precede nell'elenco.

Ad esempio, per aggiungere la directory "C:\ps-test\Modules", digitare:

        $env:psmodulepath + ";c:\ps-test\Modules"

Quando si aggiunge un percorso in PSModulePath, i comandi Get-Module e Import-Module includono i moduli in tale percorso.

Il valore impostato ha effetto solo nella sessione corrente. Per rendere permanente la modifica, aggiungere il comando nel profilo di Windows PowerShell oppure usare Sistema nel Pannello di controllo per modificare il valore della variabile di ambiente PSModulePath nel Registro di sistema.

Per rendere permanente la modifica, è anche possibile usare il metodo SetEnvironmentVariable della classe System.Environment per aggiungere un parametro Path nella variabile di ambiente PSModulePath.

Per altre informazioni sulla variabile PSModulePath, vedere about_Environment_Variables.

MODULI E CONFLITTI DEI NOMI

I conflitti dei nomi si verificano quando più comandi della sessione hanno lo stesso nome. L'importazione di un modulo genera un conflitto di nomi quando i comandi al suo interno hanno gli stessi nomi dei comandi o degli elementi della sessione.

Se si verificano conflitti dei nomi, è possibile che alcuni comandi vengano nascosti o sostituiti.

- Comandi nascosti. Un comando è nascosto se non è quello che viene eseguito quando si digita il relativo nome, ma può essere eseguito con un altro metodo, ad esempio completando il nome con il nome del modulo o dello snap-in in cui ha avuto origine.

- Comandi sostituiti. Un comando è stato sostituito se non è possibile eseguirlo perché è stato sovrascritto da un comando con lo stesso nome. Non è possibile eseguire un comando sostituito, neanche se si rimuove il modulo che ha generato il conflitto, a meno che non venga riavviata la sessione.

Import-Module potrebbe aggiungere comandi che nascondono o sostituiscono quelli della sessione corrente. Inoltre, i comandi della sessione possono nascondere i comandi aggiunti dal modulo.

Per rilevare i conflitti dei nomi, usare il parametro All del cmdlet Get-Command. A partire da Windows PowerShell 3.0, Get-Command ottiene solo i comandi che vengono eseguiti quando si digita il relativo nome. Il parametro All ottiene tutti i comandi con il nome specifico nella sessione.

Per evitare conflitti dei nomi, usare il parametro NoClobber o Prefix del cmdlet Import-Module. Il parametro Prefix aggiunge un prefisso ai nomi dei comandi importati in modo da renderli univoci nella sessione. Il parametro NoClobber non importa i comandi che nasconderebbero o sostituirebbero i comandi della sessione.

È anche possibile usare i parametri Alias, Cmdlet, Function e Variable di Import-Module per selezionare solo i comandi da importare ed escludere quelli che generano conflitti dei nomi nella sessione.

Gli autori di moduli possono evitare conflitti dei nomi usando la proprietà DefaultCommandPrefix del manifesto del modulo per aggiungere un prefisso predefinito a tutti i nomi dei comandi. Il valore del parametro Prefix ha la precedenza sul valore di DefaultCommandPrefix.

Anche se un comando è nascosto, è possibile eseguirlo completandone il nome con il nome del modulo o dello snap-in in cui ha avuto origine.

Le regole di precedenza dei comandi di Windows PowerShell determinano quale comando viene eseguito quando la sessione include più comandi con lo stesso nome.

Ad esempio, se una sessione include una funzione e un cmdlet con lo stesso nome, Windows PowerShell esegue la funzione per impostazione predefinita. Se la sessione include comandi dello stesso tipo con lo stesso nome, ad esempio due cmdlet con lo stesso nome, per impostazione predefinita viene eseguito il comando aggiunto più di recente.

Per altre informazioni, tra cui una spiegazione delle regole di precedenza e le istruzioni per eseguire comandi nascosti, vedere about_Command_Precedence.

MODULI E SNAP-IN

È possibile aggiungere comandi nella sessione da moduli e snap-in. I moduli possono aggiungere tutti i tipi di comando, tra cui cmdlet, provider e funzioni, nonché elementi come variabili, alias e unità di Windows PowerShell. Gli snap-in possono aggiungere solo cmdlet e provider.

Prima di rimuovere un modulo o uno snap-in dalla sessione, usare i comandi seguenti per determinare quali comandi verranno rimossi.

Per trovare l'origine di un cmdlet nella sessione, usare il comando nel formato seguente:

        get-command <cmdlet-name> | format-list -property verb, noun, pssnapin, module

Ad esempio, per trovare l'origine del cmdlet Get-Date, digitare:

        get-command get-date | format-list -property verb, noun, pssnapin, module

Per altre informazioni sugli snap-in di Windows PowerShell, vedere about_PSSnapins.

ERRORI E AVVISI RELATIVI AI MODULI

I comandi esportati da un modulo devono seguire le regole di denominazione relative ai comandi di Windows PowerShell. Se il modulo importato esporta cmdlet o funzioni i cui nomi contengono verbi non approvati, il cmdlet Import-Module visualizza il messaggio di avviso seguente.

AVVISO: alcuni nomi di comandi importati includono verbi non approvati che possono renderli meno individuabili. Usare il parametro Verbose per altri dettagli o digitare Get-Verb per visualizzare l'elenco dei verbi approvati.

Questo messaggio è solo un avviso. Il modulo completo viene comunque importato, inclusi i comandi non conformi. Il messaggio viene visualizzato dagli utenti del modulo, tuttavia il problema di denominazione deve essere corretto dall'autore del modulo.

Per eliminare il messaggio di avviso, usare il parametro DisableNameChecking del cmdlet Import-Module.

MODULI E SNAP-IN PREDEFINITI

In Windows PowerShell 2.0 e in applicazioni host meno recenti di Windows PowerShell 3.0 e versioni successive, i comandi principali che vengono installati con Windows PowerShell sono compressi in snap-in che vengono aggiunti automaticamente a ogni sessione di Windows PowerShell.

A partire da Windows PowerShell 3.0, nei programmi host più recenti, ossia quelli che implementano l'API dello stato della sessione iniziale InitialSessionState.CreateDefault2, i comandi principali sono inseriti in moduli. Il valore predefinito è Microsoft.PowerShell.Core, che costituisce sempre uno snap-in.

Lo snap-in Microsoft.PowerShell.Core viene aggiunto a ogni sessione per impostazione predefinita. I moduli vengono caricati automaticamente al primo utilizzo.

NOTA: le sessioni remote, tra cui quelle avviate con il cmdlet New-PSSession, sono versioni meno recenti in cui i comandi predefiniti vengono inseriti in pacchetti di snap-in.

I moduli (o gli snap-in) seguenti vengono installati con Windows PowerShell.

        Microsoft.PowerShell.Core
        Microsoft.PowerShell.Diagnostics
        Microsoft.PowerShell.Host
        Microsoft.PowerShell.Management
        Microsoft.PowerShell.ScheduledJob
        Microsoft.PowerShell.Security
        Microsoft.PowerShell.Utility
        Microsoft.WSMan.Management
        PSDesiredStateConfiguration
        PSWorkflow
        PSWorkflowUtility
        ISE

REGISTRAZIONE DI EVENTI DEI MODULI

A partire da Windows PowerShell 3.0, è possibile registrare gli eventi di esecuzione per i cmdlet e le funzioni dei moduli e degli snap-in di Windows PowerShell impostando la proprietà LogPipelineExecutionDetails di moduli e snap-in su $True. È anche possibile usare un'impostazione di Criteri di gruppo, Attiva registrazione moduli, per abilitare la registrazione dei moduli in tutte le sessioni di Windows PowerShell. Per altre informazioni, vedere about_EventLogs (https://go.microsoft.com/fwlink/?LinkID=113224) e about_Group_Policy_Settings (https://go.microsoft.com/fwlink/?LinkID=251696).

VEDERE ANCHE

about_Command_Precedence

about_DesiredStateConfiguration

about_EventLogs

about_Group_Policy_Settings

about_PSSnapins

Get-Command

Get-Help

Get-Module

Import-Module

Remove-Module