Export-PSSession
Esporta i comandi da un'altra sessione e li salva in un modulo di PowerShell.
Sintassi
Export-PSSession
[-OutputModule] <String>
[-Force]
[-Encoding <Encoding>]
[[-CommandName] <String[]>]
[-AllowClobber]
[-ArgumentList <Object[]>]
[-CommandType <CommandTypes>]
[-Module <String[]>]
[-FullyQualifiedModule <ModuleSpecification[]>]
[[-FormatTypeName] <String[]>]
[-Certificate <X509Certificate2>]
[-Session] <PSSession>
[<CommonParameters>]
Descrizione
Il cmdlet Export-PSSession
ottiene cmdlet, funzioni, alias e altri tipi di comando da un'altra sessione di PowerShell (PSSession) in un computer locale o remoto e li salva in un modulo di PowerShell. Per aggiungere i comandi dal modulo alla sessione corrente, usare il cmdlet Import-Module
.
A differenza di Import-PSSession
, che importa i 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 i comandi, usare il cmdlet New-PSSession
per creare una sessione PSSession con i comandi da esportare. Usare quindi il cmdlet Export-PSSession
per esportare i comandi.
Per evitare conflitti di nomi di comando, l'impostazione predefinita per Export-PSSession
consiste nell'esportare tutti i comandi, ad eccezione dei comandi presenti nella sessione corrente. È possibile usare il parametro CommandName per specificare i comandi da esportare.
Il cmdlet Export-PSSession
usa la funzionalità di comunicazione remota implicita di PowerShell. Quando si importano comandi nella sessione corrente, vengono eseguiti in modo implicito nella sessione originale o in una sessione simile nel computer di origine.
Esempio
Esempio 1: Esportare i comandi da una sessione PSSession
In questo esempio viene creata una nuova sessione PSSession dal computer locale al computer Server01. Tutti i comandi, ad eccezione di quelli presenti nella sessione corrente, vengono esportati nel modulo denominato Server01 nel computer locale. L'esportazione include i dati di formattazione per i comandi.
$S = New-PSSession -ComputerName Server01
Export-PSSession -Session $S -OutputModule Server01
Il comando New-PSSession
crea una sessione PSSession nel computer Server01. La sessione PSSession viene archiviata nella variabile $S
. Il comando Export-PSSession
esporta i comandi della variabile $S
e la formattazione dei dati nel modulo Server01.
Esempio 2: Esportare i comandi Get e Set
In questo esempio vengono esportati tutti i comandi Get
e Set
da un server.
$newSession = @{
ConnectionUri = 'https://exchange.microsoft.com/mailbox'
Credential = 'exchangeadmin01@hotmail.com'
Authentication = 'Negotiate'
}
$S = New-PSSession @newSession
$exportSession = @{
Session = $S
Module = 'exch*'
CommandName = 'Get-*', 'Set-*'
FormatTypeName = '*'
OutputModule = "$PSHOME\Modules\Exchange"
Encoding = 'ascii'
}
Export-PSSession @exportSession
Questi comandi esportano i comandi Get
e Set
da uno snap-in di Microsoft Exchange Server in un computer remoto in un modulo di Exchange nella directory $PSHOME\Modules
nel computer locale.
L'inserimento del modulo nella directory $PSHOME\Modules
lo rende accessibile a tutti gli utenti del computer.
Esempio 3: Esportare i comandi da un computer remoto
Questo esempio esporta i cmdlet da una sessione PSSession in un computer remoto e li salva in un modulo nel computer locale. I cmdlet del modulo vengono aggiunti alla sessione corrente in modo che possano essere usati.
$newSession = @{
ComputerName = 'Server01'
Credential = 'Server01\User01'
}
$S = New-PSSession @newSession
$exportSession = @{
Session = $S
OutputModule = 'TestCmdlets'
Type = 'Cmdlet'
CommandName = '*test*'
FormatTypeName = '*'
}
Export-PSSession @exportSession
Remove-PSSession $S
Import-Module TestCmdlets
Get-Help Test*
Test-Files
Il comando New-PSSession
crea una sessione PSSession nel computer Server01 e la salva nella variabile $S
. Il comando Export-PSSession
esporta i cmdlet i cui nomi iniziano con Test dalla sessione PSSession in $S
al modulo TestCmdlets nel computer locale.
Il cmdlet Remove-PSSession
elimina la sessione PSSession in $S
dalla sessione corrente. Questo comando mostra che la sessione PSSession non deve essere attiva per usare i comandi importati dalla sessione. Il cmdlet Import-Module
aggiunge i cmdlet nel modulo TestCmdlets alla sessione corrente. Il comando può essere eseguito in qualsiasi sessione in qualsiasi momento.
Il cmdlet Get-Help
ottiene la Guida per i cmdlet i cui nomi iniziano con Test. Dopo aver aggiunto i comandi in un modulo alla sessione corrente, è possibile usare i cmdlet Get-Help
e Get-Command
per informazioni sui comandi importati. Il cmdlet Test-Files
è stato esportato dal computer Server01 e aggiunto alla sessione. Il cmdlet Test-Files
viene eseguito in una sessione remota nel computer da cui è stato importato il comando. PowerShell crea una sessione dalle informazioni archiviate nel modulo TestCmdlets.
Esempio 4: Esportare e clobber comandi nella sessione corrente
In questo esempio vengono esportati i comandi archiviati in una variabile nella sessione corrente.
Export-PSSession -Session $S -AllowClobber -OutputModule AllCommands
Questo comando Export-PSSession
esporta tutti i comandi e tutti i dati di formattazione dalla sessione PSSession nella variabile $S
nella sessione corrente. Il parametro AllowClobber include comandi con gli stessi nomi dei comandi nella sessione corrente.
Esempio 5: Esportare i comandi da una sessione PSSession chiusa
In questo esempio viene illustrato come eseguire i comandi esportati con opzioni speciali quando la sessione PSSession che ha creato i comandi esportati viene chiusa.
Se la sessione remota originale viene chiusa quando viene importato un modulo, il modulo userà qualsiasi sessione remota aperta che si connette al computer di origine. Se non è presente alcuna sessione corrente nel computer di origine, il modulo ristabilirà una sessione.
Per eseguire comandi esportati con opzioni speciali in una sessione remota, è necessario creare una sessione remota con tali opzioni prima di importare il modulo. Usare il cmdlet New-PSSession
con il parametro SessionOption
$Options = New-PSSessionOption -NoMachineProfile
$S = New-PSSession -ComputerName Server01 -SessionOption $Options
Export-PSSession -Session $S -OutputModule Server01
Remove-PSSession $S
New-PSSession -ComputerName Server01 -SessionOption $Options
Import-Module Server01
Il cmdlet New-PSSessionOption
crea un oggetto PSSessionOption e salva l'oggetto nella variabile $Options
. Il comando New-PSSession
crea una sessione PSSession nel computer Server01.
Il parametro SessionOption usa l'oggetto archiviato in $Options
. La sessione viene archiviata nella variabile $S
.
Il cmdlet Export-PSSession
esporta i comandi dalla sessione PSSession in $S
al modulo Server01.
Il cmdlet Remove-PSSession
elimina la sessione PSSession nella variabile $S
.
Il cmdlet New-PSSession
crea una nuova sessione PSSession che si connette al computer Server01. Il parametro SessionOption usa l'oggetto archiviato in $Options
. Il cmdlet Import-Module
importa i comandi dal modulo Server01. I comandi nel modulo vengono eseguiti nella sessione PSSession nel computer Server01.
Parametri
-AllowClobber
Esporta i comandi specificati, anche se hanno gli stessi nomi dei comandi nella sessione corrente.
Se si esporta un comando con lo stesso nome di un comando nella sessione corrente, il comando esportato nasconde o sostituisce i comandi originali. Per altre informazioni, vedere about_Command_Precedence.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-ArgumentList
Esporta la variante del comando risultante dall'uso degli argomenti specificati (valori dei parametri).
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:
.
Tipo: | Object[] |
Alias: | Args |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Certificate
Specifica il certificato client utilizzato per firmare i file di formato (*. Format.ps1xml) o file di modulo script (.psm1
) nel modulo creato da Export-PSSession
. Immettere una variabile contenente un certificato o un comando o un'espressione che ottiene il certificato.
Per trovare un certificato, usare il cmdlet Get-PfxCertificate
o usare il cmdlet Get-ChildItem
nell'unità Certificato (Cert:). Se il certificato non è valido o non dispone di un'autorità sufficiente, il comando non riesce.
Tipo: | X509Certificate2 |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-CommandName
Esporta solo i comandi con i nomi o i modelli di nome specificati. Sono consentiti caratteri jolly. Usare CommandName o il relativo alias Nome.
Per impostazione predefinita, Export-PSSession
esporta tutti i comandi dalla sessione PSSession, ad eccezione dei comandi con gli stessi nomi dei comandi nella sessione corrente. In questo modo, i comandi non vengono nascosti o sostituiti da comandi nella sessione corrente. Per esportare tutti i comandi, anche quelli che nascondono o sostituiscono altri comandi, usare il parametro AllowClobber.
Se si usa il parametro CommandName, i file di formattazione per i comandi non vengono esportati a meno che non si usi il parametro FormatTypeName. Analogamente, se si usa il parametro FormatTypeName, non vengono esportati comandi a meno che non si usi il parametro CommandName.
Tipo: | String[] |
Alias: | Name |
Posizione: | 2 |
Valore predefinito: | All commands in the session. |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | True |
-CommandType
Esporta solo i tipi specificati di oggetti comando. Usare CommandType o il relativo alias Type.
I valori accettabili per questo parametro sono i seguenti:
-
Alias
: tutti gli alias di PowerShell nella sessione corrente. -
All
: tutti i tipi di comando. Equivale aGet-Command -Name *
. -
Application
: tutti i file diversi dai file di PowerShell nei percorsi elencati nella variabile di ambiente PATH ($Env:PATH
), inclusi .txt, .exee .dll file. -
Cmdlet
: cmdlet nella sessione corrente. Il cmdlet è l'impostazione predefinita. -
Configuration
: configurazione di PowerShell. Per altre informazioni, vedere about_Session_Configurations. -
ExternalScript
: tutti i file.ps1
nei percorsi elencati nella variabile di ambiente PATH ($Env:PATH
). -
Filter
eFunction
: tutte le funzioni di PowerShell. -
Script
blocchi script nella sessione corrente. -
Workflow
un flusso di lavoro di PowerShell. Per altre informazioni, vedere about_Workflows.
Questi valori sono definiti come enumerazione basata su flag. È possibile combinare più valori per impostare più flag usando questo parametro. I valori possono essere passati al parametro CommandType come matrice di valori o come stringa delimitata da virgole di tali valori. Il cmdlet combina i valori usando un'operazione binary-OR. Il passaggio di valori come matrice è l'opzione più semplice e consente anche di usare il completamento tramite tabulazione sui valori.
Tipo: | CommandTypes |
Alias: | Type |
Valori accettati: | Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow |
Posizione: | Named |
Valore predefinito: | All commands in the session. |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Encoding
Specifica il tipo di codifica per il file di destinazione. Il valore predefinito è utf8NoBOM
.
I valori accettabili per questo parametro sono i seguenti:
-
ascii
: usa la codifica per il set di caratteri ASCII (a 7 bit). -
ansi
: usa la codifica per la tabella codici ANSI delle impostazioni cultura correnti. Questa opzione è stata aggiunta in PowerShell 7.4. -
bigendianunicode
: codifica in formato UTF-16 usando l'ordine dei byte big-endian. -
bigendianutf32
: codifica in formato UTF-32 usando l'ordine dei byte big-endian. -
oem
: usa la codifica predefinita per i programmi MS-DOS e console. -
unicode
: codifica in formato UTF-16 usando l'ordine dei byte little-endian. -
utf7
: codifica in formato UTF-7. -
utf8
: codifica in formato UTF-8. -
utf8BOM
: codifica in formato UTF-8 con byte order mark (BOM) -
utf8NoBOM
: codifica in formato UTF-8 senza byte order mark (BOM) -
utf32
: codifica in formato UTF-32.
A partire da PowerShell 6.2, il parametro Encoding consente anche ID numerici di tabelle codici registrate (ad esempio -Encoding 1251
) o nomi di stringhe di tabelle codici registrate (ad esempio -Encoding "windows-1251"
). Per altre informazioni, vedere la documentazione di .NET per Encoding.CodePage.
A partire da PowerShell 7.4, è possibile usare il valore Ansi
per il parametro Codifica per passare l'ID numerico per la tabella codici ANSI delle impostazioni cultura correnti senza doverlo specificare manualmente.
Nota
UTF-7 * non è più consigliabile usare. A partire da PowerShell 7.1, viene scritto un avviso se si specifica utf7
per il parametro Encoding.
Tipo: | Encoding |
Valori accettati: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Posizione: | Named |
Valore predefinito: | UTF8NoBOM |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Force
Sovrascrive uno o più file di output esistenti, anche se il file ha l'attributo di sola lettura.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-FormatTypeName
Esporta le istruzioni di formattazione solo per i tipi di 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 nella sessione remota, digitare *
.
Se si usa il parametro FormatTypeName, non vengono esportati comandi a meno che non si usi il parametro CommandName.
Se si usa il parametro CommandName, i file di formattazione per i comandi non vengono esportati a meno che non si usi il parametro FormatTypeName.
Tipo: | String[] |
Posizione: | 3 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-FullyQualifiedModule
Il valore può essere un nome di modulo, una specifica completa del modulo o un percorso di un file di modulo.
Quando il valore è un percorso, il percorso può essere completo o relativo. Un percorso relativo viene risolto rispetto allo script che contiene l'istruzione using.
Quando il valore è un nome o una specifica del modulo, PowerShell cerca PSModulePath per il modulo specificato.
Una specifica del modulo è una tabella hash con le chiavi seguenti.
-
ModuleName
- Obbligatorio Specifica il nome del modulo. -
GUID
- Facoltativo Specifica il GUID del modulo. - È anche Obbligatorio specificare almeno una delle tre chiavi seguenti.
-
ModuleVersion
: specifica una versione minima accettabile del modulo. -
MaximumVersion
: specifica la versione massima accettabile del modulo. -
RequiredVersion
: specifica una versione esatta e obbligatoria del modulo. Non è possibile usare questa opzione con le altre chiavi di versione.
-
Non è possibile specificare il parametro FullyQualifiedModule nello stesso comando di un parametro Module. i due parametri si escludono a vicenda.
Tipo: | ModuleSpecification[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Module
Esporta solo i comandi negli snap-in e nei moduli di PowerShell specificati. Immettere gli snap-in e i nomi dei moduli. I caratteri jolly non sono consentiti.
Per altre informazioni, vedere Import-Module
e about_PSSnapins.
Tipo: | String[] |
Alias: | PSSnapin |
Posizione: | Named |
Valore predefinito: | All commands in the session. |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-OutputModule
Specifica un percorso e un nome facoltativi 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 che Export-PSSession
crea già esiste, il comando ha esito negativo. Per sovrascrivere i file esistenti, usare il parametro Force.
Tipo: | String |
Alias: | PSPath, ModuleName |
Posizione: | 1 |
Valore predefinito: | $HOME\Documents\WindowsPowerShell\Modules |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Session
Specifica la sessione PSSession da cui vengono esportati i comandi. Immettere una variabile contenente un oggetto sessione o un comando che ottiene un oggetto sessione, ad esempio un comando Get-PSSession
. Questo parametro è obbligatorio.
Tipo: | PSSession |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
None
Non è possibile inviare tramite pipe oggetti a questo cmdlet.
Output
Questo cmdlet restituisce un elenco di file che comprendono il modulo creato.
Note
Export-PSSession
si basa sull'infrastruttura remota di PowerShell. Per usare questo cmdlet, il computer deve essere configurato per la comunicazione remota. Per altre informazioni, vedere about_Remote_Requirements.
Non è possibile usare Export-PSSession
per esportare un provider di PowerShell.
I comandi esportati vengono eseguiti in modo implicito nella sessione PSSession da cui sono stati esportati. I dettagli dell'esecuzione remota dei comandi vengono gestiti interamente da PowerShell. È possibile eseguire i comandi esportati esattamente come si eseguirebbero i comandi locali.
Export-ModuleMember
acquisisce e salva informazioni sulla 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 i tentativi di ricreare la sessione PSSession hanno esito negativo, i comandi esportati non verranno eseguiti.
Le informazioni sulla sessione che Export-ModuleMember
acquisisce e salva nel modulo non includono opzioni di sessione, ad esempio quelle specificate nella variabile di preferenza $PSSessionOption
o usando il parametro sessionOption dei cmdlet New-PSSession
, Enter-PSSession
o Invoke-Command
. Se la sessione PSSession originale viene chiusa quando si importa il modulo, il modulo userà un'altra sessione PSSession nello stesso computer, se disponibile. Per abilitare 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
usa il cmdlet Invoke-Command
per eseguire un comando Get-Command
nella sessione PSSession. Per ottenere e salvare i dati di formattazione per i comandi, usa i cmdlet Get-FormatData
e Export-FormatData
. È possibile che vengano visualizzati messaggi di errore da Invoke-Command
, Get-Command
, Get-FormatData
e Export-FormatData
quando si esegue un comando di Export-PSSession
. Inoltre, Export-PSSession
non è in grado di esportare comandi da una sessione che non include i cmdlet Get-Command
, Get-FormatData
, Select-Object
e Get-Help
.
Export-PSSession
usa il cmdlet Write-Progress
per visualizzare lo stato di avanzamento del comando. È possibile che venga visualizzata la barra di stato durante l'esecuzione del comando.
I comandi esportati presentano le stesse limitazioni di altri comandi remoti, inclusa l'impossibilità di avviare un programma con un'interfaccia utente, ad esempio Blocco note.
Poiché i profili di PowerShell non vengono eseguiti in PSSessions, i comandi aggiunti da un profilo a una sessione non sono disponibili per Export-PSSession
. Per esportare i comandi da un profilo, usare un comando Invoke-Command
per eseguire manualmente il profilo nella sessione PSSession prima di esportare i comandi.
Il modulo creato Export-PSSession
potrebbe includere un file di formattazione, anche se il comando non importa i dati di formattazione. Se il comando non importa i dati di formattazione, i file di formattazione creati non conterranno dati di formattazione.