Importa comandi da un'altra sessione nella sessione corrente.
Sintassi
Import-PSSession [-Session] <PSSession> [[-CommandName] <string[]>] [[-FormatTypeName] <string[]>] [-AllowClobber] [-ArgumentList <Object[]>] [-CommandType {<Alias> | <Function> | <Filter> | <Cmdlet> | <ExternalScript> | <Application> | <Script> | <All>}] [-Module <string[]>] [-Prefix <string>] [<CommonParameters>]
Descrizione
Il cmdlet Import-PSSession importa comandi (cmdlet, funzioni e alias) da una sessione PSSession in un computer locale o remoto nella sessione corrente. È possibile importare qualsiasi comando trovato da Get-Command nella sessione PSSession.
Utilizzare un comando Import-PSSession per importare comandi da una shell personalizzata, ad esempio una shell di Microsoft Exchange Server, o da una sessione che include moduli e snap-in di Windows PowerShell o altri elementi che non presenti nella sessione corrente.
Per importare comandi, utilizzare per prima cosa il cmdlet New-PSSession per creare una sessione PSSession. Utilizzare quindi il cmdlet Import-PSSession per importare i comandi. Per impostazione predefinita, Import-PSSession importa tutti i comandi, ad eccezione di quelli con gli stessi nomi dei comandi nella sessione corrente. Per importare tutti i comandi, utilizzare il parametro AllowClobber.
È possibile utilizzare i comandi importati come qualsiasi comando della sessione. Quando si utilizza un comando importato, la parte importata del comando viene eseguita in modo implicito nella sessione da cui è stata importata. Tuttavia, le operazioni remote sono gestite totalmente da Windows PowerShell. Non è necessario conoscerle, ad eccezione del fatto che è necessario mantenere aperta la connessione all'altra sessione (PSSession). Se la si chiude, non sono più disponibili i comandi importati.
Poiché l'esecuzione dei comandi importati può richiedere più tempo rispetto a quella dei comandi locali, Import-PSSession aggiunge un parametro AsJob a ogni comando importato. Questo parametro consente di eseguire il comando come processo in background di Windows PowerShell. Per ulteriori informazioni, vedere about_Jobs.
Quando si utilizza Import-PSSession, Windows PowerShell aggiunge i comandi importati a un modulo temporaneo che esiste solo nella sessione dell'utente e restituisce un oggetto che rappresenta il modulo. Per creare un modulo permanente che può essere utilizzato nelle sessioni future, utilizzare il cmdlet Export-PSSession.
Il cmdlet Import-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
Importa 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.
Per impostazione predefinita, Import-PSSession non importa comandi con lo stesso nome dei comandi della sessione corrente.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
False |
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-ArgumentList <Object[]>
Importa la variante del comando risultante dall'utilizzo degli argomenti specificati (valori di parametro).
Ad esempio, per importare la variante del comando Get-Item nell'unità del certificato (Cert:) in PSSession in $s, digitare "import-pssession -session $s -command Get-Item -argumentlist cert:".
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
All command in the PSSession, except for commands with the same names as commands in the current session. |
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-CommandName <string[]>
Importa 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, Import-PSSession importa tutti i comandi dalla sessione, ad 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. Per importare 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 importati a meno che non si utilizzi il parametro FormatTypeName. Analogamente, se si utilizza il parametro FormatTypeName, non viene importato alcun comando a meno che non si utilizzi il parametro CommandName.
Obbligatorio? |
false |
Posizione? |
3 |
Valore predefinito |
All commands in the PSSession, except for commands with the same names as commands in the current session. |
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
true |
-CommandType <CommandTypes>
Per ogni oggetto del comando importa solo i tipi specificati. Il valore predefinito è Cmdlet. Utilizzare "CommandType" o il relativo alias, "Type".
I valori validi sono:
-- Alias: alias Windows PowerShell della sessione remota.
-- All: cmdlet e funzioni della sessione remota.
-- Application: tutti i file non di Windows PowerShell nei percorsi elencati nella variabile di ambiente Path ($env:path) nella sessione remota, inclusi i file con estensione txt, exe e dll.
-- Cmdlet: cmdlet della sessione remota. Il valore predefinito è "Cmdlet".
-- ExternalScript: file con estensione ps1 nei percorsi elencati nella variabile di ambiente Path ($env:path) nella sessione remota.
-- Filter e Function: funzioni di Windows PowerShell della sessione remota.
-- Script: blocchi di script della sessione remota.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
All command in the PSSession, except for commands with the same names as commands in the current session. |
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-FormatTypeName <string[]>
Importa le istruzioni di formattazione per i tipi Microsoft .NET Framework specificati. Immettere i nomi dei tipi. È consentito l'utilizzo di caratteri jolly.
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 il comando non include i parametri CommandName o FormatTypeName, Import-PSSession
importa le istruzioni di formattazione per tutti i tipi .NET Framework restituiti da un comando Get-FormatData nella sessione remota.
Se si utilizza il parametro FormatTypeName, non viene importato 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 importati a meno che non si utilizzi il parametro FormatTypeName.
Obbligatorio? |
false |
Posizione? |
4 |
Valore predefinito |
Types in the System.Management.Automation namespace |
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
true |
-Module <string[]>
Importa 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 command in the PSSession, except for commands with the same names as commands in the current session. |
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-Prefix <string>
Aggiunge il prefisso specificato ai sostantivi nei nomi dei comandi importati.
Utilizzare questo parametro per evitare conflitti di nomi che possono verificarsi quando comandi diversi della sessione hanno lo stesso nome.
Ad esempio, se si specifica il prefisso "Remote" e si importa un cmdlet Get-Date, nella sessione il cmdlet viene indicato come Get-RemoteDate e non viene confuso con il cmdlet Get-Date originale.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-Session <PSSession>
Specifica la sessione PSSession da cui vengono importati i cmdlet. Immettere una variabile che contiene un oggetto sessione o un comando che ottiene un oggetto sessione, ad esempio New-PSSession o Get-PSSession. È possibile specificare solo una sessione. 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 questo cmdlet. |
Output |
System.Management.Automation.PSModuleInfo Import-PSSession restituisce lo stesso oggetto modulo restituito da New-Module e Get-Module. Tuttavia, il modulo importato è temporaneo ed esiste solo nella sessione corrente. Per creare un modulo permanente su disco, utilizzare il cmdlet Export-PSSession. |
Note
Import-PSSession si basa sull'infrastruttura remota di Windows PowerShell. Per utilizzare questo cmdlet, è necessario configurare il computer per la comunicazione remota WS-Management. Per ulteriori informazioni, vedere about_Remote e about_Remote_Requirements.
Non è possibile utilizzare Import-PSSession per importare variabili o provider di Windows PowerShell.
Quando si importano comandi con gli stessi nomi dei comandi nella sessione corrente, i comandi importati possono nascondere alias, funzioni e cmdlet e sostituire funzioni e variabili nella sessione. Per ulteriori informazioni, vedere about_Command_Precedence.
Import-PSSession converte tutti i comandi in funzioni prima di importarli. Di conseguenza, i comandi importati hanno un comportamento leggermente diverso da quello che avrebbero se fosse stato mantenuto il tipo di comando originale. Ad esempio, se si importano un cmdlet da una sessione PSSession e un cmdlet con lo stesso nome da un modulo o uno snap-in, il cmdlet importato dalla sessione PSSession viene sempre eseguito per impostazione predefinita perché le funzioni hanno la precedenza sui cmdlet. Viceversa, se si importa un alias in una sessione che dispone di un alias con lo stesso nome, viene sempre utilizzato l'alias originale perché gli alias hanno la precedenza sulle funzioni. Per ulteriori informazioni, vedere about_Command_Precedence.
Import-PSSession utilizza il cmdlet Write-Progress per visualizzare l'avanzamento del comando. Durante l'esecuzione del comando, è possibile osservare l'indicatore di stato.
Per trovare i comandi da importare, Import-PSSession utilizza il cmdlet Invoke-Command per eseguire un comando Get-Command nella sessione PSSession. Per ottenere dati di formattazione per i comandi, utilizza il cmdlet Get-FormatData. Quando si esegue un comando Import-PSSession, è possibile che vengano visualizzati messaggi di errore da Invoke-Command, Get-Command e Get-FormatData. Inoltre, Import-PSSession non può importare comandi da una sessione PSSession che non include i cmdlet Get-Command, Get-FormatData, Select-Object e Get-Help.
I comandi importati 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 Import-PSSession. Per importare comandi da un profilo, utilizzare un comando Invoke-Command per eseguire manualmente il profilo nella sessione PSSession prima di importare i comandi.
Il modulo temporaneo creato da Import-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.
Per utilizzare Import-PSSession, il criterio di esecuzione nella sessione corrente non può essere Restricted o AllSigned, poiché il modulo creato da Import-PSSession contiene file di script non firmati non consentiti da tali criteri. Per utilizzare Import-PSSession senza modificare il criterio di esecuzione per il computer locale, utilizzare il parametro Scope di Set-ExecutionPolicy per impostare un criterio di esecuzione meno restrittivo per un singolo processo.
Esempio 1
C:\PS>$s = new-pssession -computername Server01 C:\PS> import-pssession -session $s Descrizione ----------- Con questo comando vengono importati nella sessione corrente tutti i comandi da una sessione PSSession del computer Server01, ad eccezione dei comandi con gli stessi nomi dei comandi nella sessione corrente. Poiché questo comando non utilizza il parametro CommandName, importa anche tutti i dati di formattazione obbligatori per i comandi importati.
Esempio 2
C:\PS>$s = new-pssession https://ps.testlabs.com/powershell C:\PS> import-pssession -session $s -commandname *-test -formatTypeName * C:\PS> new-test -name test1 C:\PS> get-test test1 | run-test Descrizione ----------- Con questi comandi vengono importati i comandi il cui nome termina con "-test" da una sessione PSSession nella sessione locale, quindi viene illustrato come utilizzare un cmdlet importato. Il primo comando utilizza il cmdlet New-PSSession per creare una sessione PSSession. La sessione PSSession viene quindi salvata nella variabile $s. Il secondo comando utilizza il cmdlet Import-PSSession per importare comandi dalla sessione PSSession in $s nella sessione corrente. Utilizza il parametro CommandName per specificare comandi con il sostantivo Test e il parametro FormatTypeName per importare i dati di formattazione per i comandi Test. Il terzo e il quarto comando utilizzando i comandi importati nella sessione corrente. Poiché i comandi importati vengono realmente aggiunti alla sessione corrente, si utilizza la sintassi locale per la loro esecuzione. Non è necessario utilizzare il cmdlet Invoke-Command per eseguire un comando importato.
Esempio 3
C:\PS>$s1 = new-pssession -computername s1 C:\PS> $s2 = new-pssession -computername s2 C:\PS> import-pssession -session s1 -type cmdlet -name New-Test, Get-Test -FormatTypeName * C:\PS> import-pssession -session s2 -type cmdlet -name Set-Test -FormatTypeName * C:\PS> new-test Test1 | set-test -runtype full Descrizione ----------- In questo esempio viene illustrato che è possibile utilizzare i cmdlet importati come quelli locali. Con questi comandi vengono importati i cmdlet New-Test e Get-Test da una sessione PSSession del computer Server01 e il cmdlet Set-Test da una sessione PSSession del computer Server02. Anche se i cmdlet sono stati importati da sessioni PSSession diverse, è possibile reindirizzare un oggetto da un cmdlet a un altro senza errori.
Esempio 4
C:\PS>$s = new-pssession -computername Server01 C:\PS> import-pssession -session $s -commandname *-test* -formattypename * C:\PS> $batch = new-test -name Batch -asjob C:\PS> receive-job $batch Descrizione ----------- In questo esempio viene illustrato come eseguire un comando importato come processo in background. Poiché l'esecuzione dei comandi importati può richiedere più tempo rispetto a quella dei comandi locali, Import-PSSession aggiunge un parametro AsJob a ogni comando importato. Il parametro AsJob consente di eseguire il comando come processo in background. Con il primo comando viene creata una sessione PSSession nel computer Server01 e l'oggetto PSSession viene salvato nella variabile $s. Nel secondo comando viene utilizzato Import-PSSession per importare i cmdlet Test dalla sessione PSSession in $s nella sessione corrente. Nel terzo comando viene utilizzato il parametro AsJob del cmdlet New-Test importato per eseguire un comando New-Test come processo in background. Il comando salva l'oggetto processo restituito da New-Test nella variabile $batch. Nel quarto comando viene utilizzato il cmdlet Receive-Job per ottenere i risultati del processo nella variabile $batch.
Esempio 5
C:\PS>$s = new-pssession -comp Server01 C:\PS> invoke-command -session $s {import-module TestManagement} C:\PS> import-pssession -session $s -module TestManagement Descrizione ----------- In questo esempio viene illustrato come importare i cmdlet e le funzioni da un modulo di Windows PowerShell in un computer remoto nella sessione corrente. Con il primo comando una sessione PSSession viene creata nel computer Server01 e salvata nella variabile $s. Nel secondo comando viene utilizzato il cmdlet Invoke-Command per eseguire un comando Import-Module nella sessione PSSession in $s. In genere, il modulo verrebbe aggiunto a tutte le sessioni da un comando Import-Module in un profilo di Windows PowerShell, ma nelle sessioni PSSession non sono in esecuzione i profili. Nel terzo comando viene utilizzato il parametro Module di Import-PSSession per importare i cmdlet e le funzioni del modulo nella sessione corrente.
Esempio 6
C:\PS>import-pssession $s -CommandName Get-Date, SearchHelp -formatTypeName * -AllowClobber Name : tmp_79468106-4e1d-4d90-af97-1154f9317239_tcw1zunz.ttf Path : C:\Users\User01\AppData\Local\Temp\tmp_79468106-4e1d-4d90-af97-1154f9317239_tcw1zunz.ttf\tmp_79468106-4e1d-4d90-af97-1154f9317239_ tcw1zunz.ttf.psm1 Description : Implicit remoting for http://server01.corp.fabrikam.com/wsman Guid : 79468106-4e1d-4d90-af97-1154f9317239 Version : 1.0 ModuleBase : C:\Users\User01\AppData\Local\Temp\tmp_79468106-4e1d-4d90-af97-1154f9317239_tcw1zunz.ttf ModuleType : Script PrivateData : {ImplicitRemoting} AccessMode : ReadWrite ExportedAliases : {} ExportedCmdlets : {} ExportedFunctions : {[Get-Date, Get-Date], [SearchHelp, SearchHelp]} ExportedVariables : {} NestedModules : {} Descrizione ----------- In questo esempio viene illustrato che Import-PSSession crea un modulo in un file temporaneo su disco. Viene inoltre illustrato che tutti i comandi vengono convertiti in funzioni prima di essere importati nella sessione corrente. Il comando utilizza il cmdlet Import-PSSession per importare un cmdlet Get-Date e una funzione SearchHelp nella sessione corrente. Il cmdlet Import-PSSession restituisce un oggetto PSModuleInfo che rappresenta il modulo temporaneo. Il valore della proprietà Path indica che Import-PSSession ha creato un file di modulo script (con estensione psm1) in un percorso temporaneo. La proprietà ExportedFunctions indica che il cmdlet Get-Date e la funzione SearchHelp sono stati entrambi importati come funzioni.
Esempio 7
C:\PS>import-pssession $s -CommandName Get-Date -formatTypeName * -AllowClobber C:\PS> get-command get-date CommandType Name Definition ----------- ---- ---------- Function Get-Date ... Cmdlet Get-Date Get-Date [[-Date] <DateTime>] [-Year <Int32>] [-Month <Int32>] C:\PS> Get-Date 09074 C:\PS> (get-command -type cmdlet -name get-date).pssnapin.name Microsoft.PowerShell.Utility C:\PS> Microsoft.PowerShell.Utility\get-date Sunday, March 15, 2009 2:08:26 PM Descrizione ----------- In questo esempio viene illustrato come eseguire un comando nascosto da un comando importato. Il primo comando importa un cmdlet Get-Date dalla sessione PSSession nella variabile $s. Poiché la sessione corrente include un cmdlet Get-Date, il parametro AllowClobber è obbligatorio nel comando. Il secondo comando utilizza il cmdlet Get-Command per ottenere i comandi Get-Date nella sessione corrente. Nell'output viene illustrato che la sessione include il cmdlet Get-Date originale e una funzione Get-Date. La funzione Get-Date esegue il cmdlet Get-Date importato nella sessione PSSession in $s. Il terzo comando esegue un comando Get-Date. Poiché le funzioni hanno la precedenza sui cmdlet, in Windows PowerShell viene eseguita la funzione Get-Date importata che restituisce una data giuliana. Il quarto e il quinto comando mostrano come utilizzare un nome completo per eseguire un comando nascosto da un comando importato. Il quarto comando ottiene il nome dello snap-in di Windows PowerShell che ha aggiunto il cmdlet Get-Date alla sessione corrente. Il quinto comando utilizza il nome completo dello snap-in del cmdlet Get-Date per eseguire un comando Get-Date. Per ulteriori informazioni sulla precedenza dei comandi e sui comandi nascosti, vedere about_Command_Precedence.
Esempio 8
C:\PS>import-pssession -session $s -commandName *Item* -AllowClobber Descrizione ----------- Questo comando importa comandi i cui nomi includono "Item" dalla sessione PSSession in $s. Poiché il comando include il parametro CommandName ma non il parametro FormatTypeData, viene importato solo il comando. Utilizzare questo comando quando si utilizza Import-PSSession per eseguire un comando in un computer remoto e si dispone già dei dati di formattazione per il comando nella sessione corrente.
Esempio 9
C:\PS>$m = import-pssession -session $s -CommandName *bits* -formattypename *bits* C:\PS> get-command -module $m CommandType Name ----------- ---- Function Add-BitsFile Function Complete-BitsTransfer Function Get-BitsTransfer Function Remove-BitsTransfer Function Resume-BitsTransfer Function Set-BitsTransfer Function Start-BitsTransfer Function Suspend-BitsTransfer Descrizione ----------- Questo comando illustra come utilizzare il parametro Module di Get-Command per individuare i comandi importati nella sessione da un comando Import-PSSession. Il primo comando utilizza il cmdlet Import-PSSession per importare comandi il cui nome include "bits" dalla sessione PSSession nella variabile $s. Il comando Import-PSSession restituisce un modulo temporaneo e salva il modulo nella variabile $m. Il secondo comando utilizza il cmdlet Get-Command per ottenere i comandi esportati dal modulo nella variabile $m. Il parametro Module accetta un valore stringa, progettato per il nome del modulo. Quando si invia un oggetto modulo, tuttavia, su di esso in Windows PowerShell viene utilizzato il metodo ToString che restituisce il nome del modulo. Il comando Get-Command equivale a "get-command $m.name".
Vedere anche