Importa comandi da un'altra sessione e li salva in un modulo di Windows PowerShell.

Sintassi

Export-PSSession [-Session] <PSSession> [-OutputModule] <string> [[-CommandName] <string[]>] [[-FormatTypeName] <string[]>] [-AllowClobber] [-ArgumentList <Object[]>] [-CommandType {<Alias> | <Function> | <Filter> | <Cmdlet> | <ExternalScript> | <Application> | <Script> | <All>}] [-Encoding <string>] [-Force] [-Module <string[]>] [<CommonParameters>]

Descrizione

Il cmdlet Export-PSSession ottiene cmdlet, funzioni, alias e altri tipi di comando da un'altra sessione PSSession in un computer locale o remoto e li salva in un modulo di Windows PowerShell. Per aggiungere i comandi del modulo alla sessione corrente, utilizzare il cmdlet Import-Module.

A differenza di Import-PSSession che importa comandi da un'altra sessione PSSession nella sessione corrente, Export-PSSession salva i comandi in un modulo. I comandi non vengono importati nella sessione corrente.

Per esportare comandi, utilizzare innanzitutto il cmdlet New-PSSession per creare una sessione PSSession contenente i comandi da esportare. Utilizzare quindi il cmdlet Export-PSSession per esportare i comandi. Per impostazione predefinita, Export-PSSession esporta tutti i comandi a eccezione di quelli già esistenti nella sessione corrente, ma è possibile utilizzare i parametri CommandName per specificare i comandi da esportare.

Il cmdlet Export-PSSession utilizza la funzionalità di comunicazione remota implicita di Windows PowerShell. Quando si importano comandi nella sessione corrente, essi vengono eseguiti in modo implicito nella sessione originale o in una sessione simile nel computer di origine.

Parametri

-AllowClobber

Esporta i comandi specificati anche se hanno gli stessi nomi dei comandi della sessione corrente.

Se si importa un comando con lo stesso nome di un comando nella sessione corrente, il comando importato nasconde o sostituisce i comandi originali. Per ulteriori informazioni, vedere about_Command_Precedence.

Export-PSSession non importa i comandi con gli stessi nomi dei comandi della sessione corrente. Il comportamento predefinito ha lo scopo di evitare i conflitti tra i nomi dei comandi.

Obbligatorio?

false

Posizione?

named

Valore predefinito

False

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-ArgumentList <Object[]>

Esporta la variante del comando risultante dall'utilizzo degli argomenti specificati (valori di parametro).

Ad esempio, per esportare la variante del comando Get-Item nell'unità del certificato (Cert:) nella sessione PSSession in $s, digitare "export-pssession -session $s -command Get-Item -argumentlist cert:".

Obbligatorio?

false

Posizione?

named

Valore predefinito

nessuno

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-CommandName <string[]>

Esporta solo i comandi con i modelli di nome o i nomi specificati. È consentito l'utilizzo di caratteri jolly. Utilizzare "CommandName" o il relativo alias, "Name".

Per impostazione predefinita, Export-PSSession esporta tutti i comandi dalla sessione PSSession, a eccezione di quelli con gli stessi nomi dei comandi nella sessione corrente. In questo modo si evita che i comandi importati nascondano o sostituiscano comandi nella sessione corrente. Per esportare tutti i comandi, anche quelli che ne nascondono o sostituiscono altri, utilizzare il parametro AllowClobber.

Se si utilizza il parametro CommandName, i file di formattazione per i comandi non vengono esportati a meno che non si utilizzi il parametro FormatTypeName. Analogamente, se si utilizza il parametro FormatTypeName, non viene esportato alcun comando a meno che non si utilizzi il parametro CommandName.

Obbligatorio?

false

Posizione?

3

Valore predefinito

All commands in the session.

Accettare input da pipeline?

false

Accettare caratteri jolly?

true

-CommandType <CommandTypes>

Esporta solo i tipi specificati degli oggetti comando. Utilizzare "CommandType" o il relativo alias, "Type".

I valori validi sono:

-- Alias: tutti gli alias Windows PowerShell della sessione corrente.

-- All: tutti i tipi di comando. Equivale a "Get-Command *".

-- Application: tutti i file non di Windows PowerShell nei percorsi elencati nella variabile di ambiente Path ($env:path), inclusi i file con estensione txt, exe e dll.

-- Cmdlet: cmdlet della sessione corrente. Il valore predefinito è "Cmdlet".

-- ExternalScript: tutti i file con estensione ps1 nei percorsi elencati nella variabile di ambiente Path ($env:path).

-- Filter e Function: tutte le funzioni di Windows PowerShell.

-- Script: blocchi di script nella sessione corrente.

Obbligatorio?

false

Posizione?

named

Valore predefinito

All commands in the session.

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Encoding <string>

Specifica la codifica per i file di output. I valori validi sono Unicode, UTF7, UTF8, ASCII, UTF32, BigEndianUnicode, Default e OEM. Il valore predefinito è UTF-8.

Obbligatorio?

false

Posizione?

named

Valore predefinito

UTF-8

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Force

Sovrascrive uno o più file di output esistenti, anche se per il file è impostato l'attributo di sola lettura.

Obbligatorio?

false

Posizione?

named

Valore predefinito

False

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-FormatTypeName <string[]>

Esporta le istruzioni di formattazione solo per i tipi Microsoft .NET Framework specificati. Immettere i nomi dei tipi. Per impostazione predefinita, Export-PSSession esporta le istruzioni di formattazione per tutti i tipi .NET Framework che non si trovano nello spazio dei nomi System.Management.Automation.

Il valore di questo parametro deve essere il nome di un tipo restituito da un comando Get-FormatData nella sessione da cui vengono importati i comandi. Per ottenere tutti i dati di formattazione della sessione remota, digitare *.

Se si utilizza il parametro FormatTypeName, non viene esportato alcun comando a meno che non si utilizzi il parametro CommandName.

Analogamente, se si utilizza il parametro CommandName, i file di formattazione per i comandi non vengono esportati a meno che non si utilizzi il parametro FormatTypeName.

Obbligatorio?

false

Posizione?

4

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Module <string[]>

Esporta solo i comandi negli snap-in e nei moduli di Windows PowerShell specificati. Immettere i nomi degli snap-in e dei moduli. Non è consentito l'utilizzo di caratteri jolly.

Per ulteriori informazioni, vedere about_Pssnapins e Import-Module.

Obbligatorio?

false

Posizione?

named

Valore predefinito

All commands in the session.

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-OutputModule <string>

Specifica un percorso (facoltativo) e un nome per il modulo creato da Export-PSSession. Il percorso predefinito è $home\Documents\WindowsPowerShell\Modules. Questo parametro è obbligatorio.

Se la sottodirectory del modulo o uno qualsiasi dei file creati da Export-PSSession esiste già, il comando ha esito negativo. Per sovrascrivere i file esistenti, utilizzare il parametro Force.

Obbligatorio?

true

Posizione?

2

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Session <PSSession>

Specifica la sessione PSSession da cui vengono esportati i comandi. Immettere una variabile che contiene un oggetto sessione o un comando che ottiene un oggetto sessione, ad esempio Get-PSSession. Questo parametro è obbligatorio.

Obbligatorio?

true

Posizione?

1

Valore predefinito

nessuno

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

<CommonParameters>

Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.

Input e output

Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.

Input

Nessuno

Non è possibile reindirizzare oggetti a Export-PSSession.

Output

System.IO.FileInfo

Export-PSSession restituisce un elenco di file che comprendono il modulo creato.

Note

Export-PSSession si basa sull'infrastruttura remota di Windows PowerShell. Per utilizzare questo cmdlet, è necessario configurare il computer per la comunicazione remota. Per ulteriori informazioni, vedere about_Remote_Requirements.

Non è possibile utilizzare Export-PSSession per esportare un provider di Windows PowerShell.

I comandi esportati vengono eseguiti in modo implicito nella sessione PSSession da cui sono stati esportati. Tuttavia, i dettagli dell'esecuzione dei comandi in modalità remota sono gestiti interamente da Windows PowerShell. È possibile eseguire i comandi esportati come se si trattasse di comandi locali.

Export-Module acquisisce e salva le informazioni relative alla sessione PSSession nel modulo esportato. Se la sessione PSSession da cui sono stati esportati i comandi viene chiusa quando si importa il modulo e non sono presenti sessioni PSSession attive nello stesso computer, i comandi nel modulo tentano di ricreare la sessione PSSession. Se tale tentativo ha esito negativo, i comandi esportati non verranno eseguiti.

Le informazioni relative alla sessione acquisite e salvate nel modulo da Export-Module non includono le opzioni della sessione, ad esempio quelle specificate nella variabile automatica $PSSessionOption o attraverso i parametri SessionOption del cmdlet New-PSSession, Enter-PSSession o Invoke-Command. Se la sessione PSSession originale viene chiusa quando si importa il modulo, il modulo ne utilizzerà un'altra nello stesso computer, se disponibile. Per consentire l'esecuzione dei comandi importati in una sessione configurata correttamente, creare una sessione PSSession con le opzioni desiderate prima di importare il modulo.

Per trovare i comandi da esportare, Export-PSSession utilizza il cmdlet Invoke-Command per eseguire un comando Get-Command nella sessione PSSession. Per ottenere e salvare i dati di formattazione per i comandi, utilizza i cmdlet Get-FormatData e Export-FormatData. Quando si esegue un comando Export-PSSession, è possibile che vengano visualizzati messaggi di errore da Invoke-Command, Get-Command, Get-FormatData ed Export-FormatData. Inoltre, Export-PSSession non può esportare comandi da una sessione che non include i cmdlet Get-Command, Get-FormatData, Select-Object e Get-Help.

Export-PSSession utilizza il cmdlet Write-Progress per visualizzare l'avanzamento del comando. Durante l'esecuzione del comando, è possibile osservare l'indicatore di stato.

I comandi esportati sono soggetti alle stesse limitazioni degli altri comandi remoti, inclusa l'impossibilità di avviare un programma con interfaccia utente, ad esempio Blocco note.

Poiché i profili di Windows PowerShell non vengono eseguiti nelle sessioni PSSession, i comandi aggiunti da un profilo a una sessione non sono disponibili per Export-PSSession. Per esportare comandi da un profilo, utilizzare un comando Invoke-Command per eseguire manualmente il profilo nella sessione PSSession prima di esportare i comandi.

Il modulo creato da Export-PSSession potrebbe includere un file di formattazione, anche se il comando non importa dati di formattazione. Se il comando non importa dati di formattazione, qualsiasi file di formattazione creato non conterrà dati di formattazione.

Esempio 1

C:\PS>$s = new-pssession -computerName Server01

C:\PS> export-pssession -session $s -outputModule Server01

Descrizione
-----------
Tramite i comandi di questo esempio vengono esportati tutti i comandi da una sessione PSSession nel computer Server01 al modulo Server01 nel computer locale, ad eccezione di quelli con gli stessi nomi dei comandi nella sessione corrente. Vengono inoltre esportati i dati di formattazione per i comandi. 

Il primo comando crea una sessione PSSession nel computer Server01. Con il secondo comando vengono esportati i comandi e i dati di formattazione dalla sessione nel modulo Server01.






Esempio 2

C:\PS>$s = new-pssession -ConnectionUri http://exchange.microsoft.com/mailbox -credential exchangeadmin01@hotmail.com -authentication negotiate

C:\PS> export-pssession -session $r -module exch* -commandname get-*, set-* -formattypename * -outputModule $pshome\Modules\Exchange -encoding ASCII

Descrizione
-----------
Con questi comandi vengono esportati i comandi Get e Set da uno snap-in Microsoft Exchange Server in un computer remoto a un modulo di Exchange nella directory $pshome\Modules del computer locale.

L'inserimento del modulo nella directory $pshome\Modules lo rende accessibile a tutti gli utenti del computer.






Esempio 3

C:\PS>$s = new-pssession -computerName Server01 -credential Server01\User01

C:\PS> export-pssession -session $s -outputModule TestCmdlets -type cmdlet -commandname *test* -formattypename *

C:\PS> remove-pssession $s

C:\PS> import-module TestCmdlets

C:\PS> get-help test*

C:\PS> test-files

Descrizione
-----------
Con questi comandi i cmdlet vengono esportati da una sessione PSSession in un computer remoto e vengono salvati in un modulo nel computer locale. I cmdlet vengono quindi aggiunti dal modulo alla sessione corrente per poterli utilizzare.

Con il primo comando una sessione PSSession viene creata nel computer Server01 e salvata nella variabile $s.

Con il secondo comando i cmdlet il cui nome inizia con "Test" vengono esportati dalla sessione PSSession in $s al modulo TestCmdlets nel computer locale.

Nel terzo comando viene utilizzato il cmdlet Remove-PSSession per eliminare la sessione PSSession in $s dalla sessione corrente. Con questo comando viene illustrato che non è necessario che la sessione PSSession sia attiva per utilizzare i comandi importati da essa.

Nel quarto comando, che può essere eseguito in qualsiasi sessione e in qualsiasi momento, viene utilizzato il cmdlet Import-Module per aggiungere alla sessione corrente i cmdlet nel modulo TestCmdlets.psm1.

Nel quinto comando viene utilizzato il cmdlet Get-Help per visualizzare la Guida per i cmdlet il cui nome inizia con "Test". Dopo l'aggiunta dei comandi di un modulo alla sessione corrente, è possibile utilizzare i cmdlet Get-Help e Get-Command per ottenere ulteriori informazioni sui comandi importati, come per qualsiasi comando della sessione.

Nel sesto comando viene utilizzato il cmdlet Test-Files, esportato dal computer Server01 e aggiunto alla sessione. 

Benché non sia evidente, il comando Test-Files viene effettivamente eseguito in una sessione remota nel computer dal quale è stato importato. Windows PowerShell crea una sessione dalle informazioni archiviate nel modulo.






Esempio 4

C:\PS>export-pssession -session $s -AllowClobber -outputModule AllCommands

Descrizione
-----------
Con questo comando vengono esportati tutti i comandi e tutti i dati di formattazione dalla sessione PSSession nella variabile $s nella sessione corrente. Viene utilizzato il parametro AllowClobber per includere comandi con lo stesso nome di comandi della sessione corrente.






Esempio 5

C:\PS>$options = New-PSSessionOption -NoMachineProfile

C:\PS> $s = new-pssession -computername Server01 -sessionoption $options

C:\PS> export-pssession -session $s -outputModule Server01

C:\PS> remove-pssession $s

C:\PS> new-pssession -computername Server01 -sessionoption $options

C:\PS> import-module Server01

Descrizione
-----------
In questo esempio viene illustrato come eseguire i comandi esportati in una sessione con determinate opzioni quando la sessione PSSession da cui sono stati esportati i comandi è chiusa.

Quando si utilizza Export-PSSession, le informazioni vengono salvate nella sessione PSSession originale nel modulo creato. Quando si importa il modulo, se la sessione remota originale è chiusa, il modulo utilizzerà qualsiasi sessione remota aperta connessa al computer originale. 

Se la sessione corrente non include una sessione remota connessa al computer originale, i comandi nel modulo ristabiliranno una sessione a tale computer. Tuttavia, Export-PSSession non salva nel modulo opzioni speciali, ad esempio quelle impostate mediante il parametro SessionOption di New-PSSession. 

Pertanto, se si desidera eseguire i comandi esportati in una sessione remota con determinate opzioni, è necessario creare una sessione remota con le opzioni desiderate prima di importare il modulo.

Nel primo comando viene utilizzato il cmdlet New-PSSessionOption per creare un oggetto PSSessionOption che viene salvato nella variabile $options.

Con il secondo comando viene creata una sessione PSSession che include le opzioni specificate. Viene utilizzato il cmdlet New-PSSession per creare una sessione PSSession nel computer Server01. Viene utilizzato il parametro SessionOption per inviare l'oggetto opzione in $options. 

Nel terzo comando viene utilizzato il cmdlet Export-PSSession per esportare comandi dalla sessione PSSession in $s al modulo Server01.

Nel quarto comando viene utilizzato il cmdlet Remove-PSSession per eliminare la sessione PSSession nella variabile $s.

Nel quinto comando viene utilizzato il cmdlet New-PSSession per creare una nuova sessione PSSession che si connette al computer Server01. In questa sessione PSSession vengono inoltre utilizzate le opzioni di sessione nella variabile $options.

Nel sesto comando viene utilizzato il cmdlet Import-Module per importare i comandi dal modulo Server01. I comandi nel modulo vengono eseguiti nella sessione PSSession nel computer Server01.






Vedere anche




Argomenti della Guida