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 Export-PSSession
cmdlet 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 Import-Module
cmdlet .
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 New-PSSession
cmdlet per creare una sessione PSSession con i comandi da esportare. Usare quindi il Export-PSSession
cmdlet 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 Export-PSSession
cmdlet usa la funzionalità di comunicazione remota implicita di PowerShell. Quando si importano i comandi nella sessione corrente, vengono eseguiti implicitamente 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 New-PSSession
comando crea una sessione PSSession nel computer Server01. La sessione PSSession viene archiviata nella $S
variabile . Il Export-PSSession
comando esporta i $S
comandi della variabile e i dati di formattazione nel modulo Server01.
Esempio 2: Esportare i comandi Get e Set
In questo esempio vengono esportati tutti i Get
comandi e Set
da un server.
$S = New-PSSession -ConnectionUri https://exchange.microsoft.com/mailbox -Credential exchangeadmin01@hotmail.com -Authentication Negotiate
Export-PSSession -Session $S -Module exch* -CommandName Get-*, Set-* -FormatTypeName * -OutputModule $PSHOME\Modules\Exchange -Encoding ASCII
Questi comandi esportano i Get
comandi e Set
da uno snap-in di Microsoft Exchange Server in un computer remoto in un modulo di Exchange nella $PSHOME\Modules
directory del computer locale.
L'inserimento del $PSHOME\Modules
modulo nella directory 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.
$S = New-PSSession -ComputerName Server01 -Credential Server01\User01
Export-PSSession -Session $S -OutputModule TestCmdlets -Type Cmdlet -CommandName *test* -FormatTypeName *
Remove-PSSession $S
Import-Module TestCmdlets
Get-Help Test*
Test-Files
Il New-PSSession
comando crea una sessione PSSession nel computer Server01 e la salva nella $S
variabile . Il Export-PSSession
comando esporta i cmdlet i cui nomi iniziano con Test dalla sessione PSSession in $S
nel modulo TestCmdlets nel computer locale.
Il Remove-PSSession
cmdlet 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 Import-Module
cmdlet aggiunge i cmdlet nel modulo TestCmdlets alla sessione corrente. Il comando può essere eseguito in qualsiasi sessione in qualsiasi momento.
Il Get-Help
cmdlet 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 Get-Help
cmdlet e Get-Command
per ottenere informazioni sui comandi importati. Il Test-Files
cmdlet è stato esportato dal computer Server01 e aggiunto alla sessione. Il Test-Files
cmdlet 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 Export-PSSession
comando esporta tutti i comandi e tutti i dati di formattazione dalla sessione PSSession nella $S
variabile 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 New-PSSession
cmdlet 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 New-PSSessionOption
cmdlet crea un oggetto PSSessionOption e salva l'oggetto nella $Options
variabile . Il New-PSSession
comando crea una sessione PSSession nel computer Server01.
Il parametro SessionOption usa l'oggetto archiviato in $Options
. La sessione viene archiviata nella $S
variabile .
Il Export-PSSession
cmdlet esporta i comandi dalla sessione PSSession nel $S
modulo Server01.
Il Remove-PSSession
cmdlet elimina la sessione PSSession nella $S
variabile .
Il New-PSSession
cmdlet crea una nuova sessione PSSession che si connette al computer Server01. Il parametro SessionOption usa l'oggetto archiviato in $Options
. Il Import-Module
cmdlet 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 lo stesso nome dei comandi della 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ArgumentList
Esporta la variante del comando generata usando gli argomenti specificati (valori del parametro).
Ad esempio, per esportare la variante del Get-Item
comando nell'unità del certificato (Cert:) nella sessione PSSession in $S
, digitare Export-PSSession -Session $S -Command Get-Item -ArgumentList cert:
.
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Certificate
Specifica il certificato client utilizzato per firmare i file di formato (*. Format.ps1xml) o file di modulo script (con estensione psm1) nel modulo creato Export-PSSession
. Immettere una variabile che contiene un certificato oppure un comando o un'espressione che ottiene il certificato.
Per trovare un certificato, usare il Get-PfxCertificate
cmdlet o usare il Get-ChildItem
cmdlet nell'unità Certificato (Cert:). Se il certificato non è valido o non ha autorizzazioni sufficienti, il comando non riesce.
Type: | X509Certificate2 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CommandName
Esporta solo i comandi con i nomi o i modelli di nomi specificati. I caratteri jolly sono consentiti. Usare CommandName o il relativo alias, Name.
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 utilizza 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 .
Type: | String[] |
Aliases: | Name |
Position: | 2 |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-CommandType
Esporta solo i tipi specificati di oggetti del 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, .exe e .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 di script nella sessione corrente.Workflow
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.
Type: | CommandTypes |
Aliases: | Type |
Accepted values: | Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow |
Position: | Named |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 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 ) o nomi di stringhe di tabelle codici registrate (ad esempio -Encoding 1251
-Encoding "windows-1251"
). Per altre informazioni, vedere la documentazione di .NET per Encoding.CodePage.
A partire da PowerShell 7.4, è possibile usare il Ansi
valore per il parametro Encoding per passare l'ID numerico per la tabella codici ANSI delle impostazioni cultura correnti senza doverlo specificare manualmente.
Nota
UTF-7* non è più consigliato per l'uso. A partire da PowerShell 7.1, viene scritto un avviso se si specifica utf7
per il parametro Encoding .
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Sovrascrive uno o più file di output esistenti, anche se il file contiene l'attributo di sola lettura.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FormatTypeName
Esporta le istruzioni di formattazione per i tipi specificati di Microsoft .NET Framework. 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 Get-FormatData
comando nella sessione da cui vengono importati i comandi. Per ottenere tutti i dati di formattazione nella sessione remota, digitare *
.
Se si utilizza il parametro FormatTypeName , non vengono esportati comandi a meno che non si usi il parametro CommandName .
Se si utilizza il parametro CommandName , i file di formattazione per i comandi non vengono esportati a meno che non si usi il parametro FormatTypeName .
Type: | String[] |
Position: | 3 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 il modulo specificato in PSModulePath .
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.
Type: | ModuleSpecification[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Module
Esporta solo i comandi negli snap-in e nei moduli di PowerShell specificati. Immettere i nomi degli snap-in e dei moduli. I caratteri jolly non sono consentiti.
Per altre informazioni, vedere Import-Module
e about_PSSnapins.
Type: | String[] |
Aliases: | PSSnapin |
Position: | Named |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 creati Export-PSSession
esiste già, il comando ha esito negativo. Per sovrascrivere i file esistenti, usare il parametro Force .
Type: | String |
Aliases: | PSPath, ModuleName |
Position: | 1 |
Default value: | $HOME\Documents\WindowsPowerShell\Modules |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | 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 Get-PSSession
comando. Questo parametro è obbligatorio.
Type: | PSSession |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | 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 nello stesso modo dei 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 acquisite Export-ModuleMember
e salvate nel modulo non includono opzioni di sessione, ad esempio quelle specificate nella $PSSessionOption
variabile di preferenza o usando il parametro SessionOption dei New-PSSession
cmdlet , Enter-PSSession
o Invoke-Command
. Se la sessione PSSession originale è chiusa quando si importa il modulo, il modulo userà un'altra sessione PSSession nello stesso computer, se disponibile. Per consentire ai comandi importati di essere eseguiti 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 Invoke-Command
cmdlet per eseguire un Get-Command
comando nella sessione PSSession. Per ottenere e salvare i dati di formattazione per i comandi, usa i Get-FormatData
cmdlet e Export-FormatData
. È possibile che vengano visualizzati messaggi di errore da Invoke-Command
, Get-Command
Get-FormatData
, e Export-FormatData
quando si esegue un Export-PSSession
comando. Inoltre, Export-PSSession
non è possibile esportare i comandi da una sessione che non include i Get-Command
cmdlet , Get-FormatData
, Select-Object
e Get-Help
.
Export-PSSession
usa il Write-Progress
cmdlet per visualizzare lo stato di avanzamento del comando. È possibile che venga visualizzato l'indicatore di stato durante l'esecuzione del comando.
I comandi esportati hanno le stesse limitazioni degli altri comandi remoti, inclusa l'impossibilità di avviare un programma con un'interfaccia utente, ad esempio il 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 Invoke-Command
comando per eseguire manualmente il profilo nella sessione PSSession prima di esportare i comandi.
Il modulo che Export-PSSession
crea può includere un file di formattazione, anche se il comando non importa i dati di formattazione. I file di formattazione creati non conterranno dati di formattazione se il comando non li importa.