Condividi tramite


Enter-PSSession

Avvia una sessione interattiva con un computer remoto.

Sintassi

Enter-PSSession
     [-ComputerName] <String>
     [-EnableNetworkAccess]
     [-Credential <PSCredential>]
     [-ConfigurationName <String>]
     [-Port <Int32>]
     [-UseSSL]
     [-ApplicationName <String>]
     [-SessionOption <PSSessionOption>]
     [-Authentication <AuthenticationMechanism>]
     [-CertificateThumbprint <String>]
     [<CommonParameters>]
Enter-PSSession
     [[-Session] <PSSession>]
     [<CommonParameters>]
Enter-PSSession
     [[-ConnectionUri] <Uri>]
     [-EnableNetworkAccess]
     [-Credential <PSCredential>]
     [-ConfigurationName <String>]
     [-AllowRedirection]
     [-SessionOption <PSSessionOption>]
     [-Authentication <AuthenticationMechanism>]
     [-CertificateThumbprint <String>]
     [<CommonParameters>]
Enter-PSSession
     [-InstanceId <Guid>]
     [<CommonParameters>]
Enter-PSSession
     [[-Id] <Int32>]
     [<CommonParameters>]
Enter-PSSession
     [-Name <String>]
     [<CommonParameters>]
Enter-PSSession
     [-VMId] <Guid>
     -Credential <PSCredential>
     [-ConfigurationName <String>]
     [<CommonParameters>]
Enter-PSSession
     [-VMName] <String>
     -Credential <PSCredential>
     [-ConfigurationName <String>]
     [<CommonParameters>]
Enter-PSSession
     [-ContainerId] <String>
     [-ConfigurationName <String>]
     [-RunAsAdministrator]
     [<CommonParameters>]

Descrizione

Il Enter-PSSession cmdlet avvia una sessione interattiva con un singolo computer remoto. Durante la sessione, i comandi digitati vengono eseguiti nel computer remoto, come se si digitasse direttamente nel computer remoto. È possibile eseguire una sola sessione interattiva per volta.

In genere, si usa il parametro ComputerName per specificare il nome del computer remoto. Tuttavia, è anche possibile usare una sessione creata usando il New-PSSession cmdlet per la sessione interattiva. Tuttavia, non è possibile usare i Disconnect-PSSessioncmdlet , Connect-PSSessiono Receive-PSSession per disconnettersi o riconnettersi a una sessione interattiva.

Per terminare la sessione interattiva e disconnettersi dal computer remoto, usare il Exit-PSSession cmdlet o digitare exit.

Importante

Enter-PSSession è progettato per sostituire la sessione interattiva corrente con una nuova sessione remota interattiva. Non è consigliabile chiamarlo dall'interno di una funzione o uno script o passandolo come comando all'eseguibile powershell.exe .

Esempio

Esempio 1: Avviare una sessione interattiva

PS C:\> Enter-PSSession
[localhost]: PS C:\>

Questo comando avvia una sessione interattiva nel computer locale. Il prompt dei comandi cambia per indicare che si stanno eseguendo comandi in un'altra sessione.

I comandi immessi vengono eseguiti nella nuova sessione e i risultati vengono restituiti nella sessione predefinita sotto forma di testo.

Esempio 2: Usare una sessione interattiva

Il primo comando usa il Enter-PSSession cmdlet per avviare una sessione interattiva con Server01, un computer remoto. All'avvio della sessione, il prompt dei comandi cambia per includere il nome del computer.

Il secondo comando ottiene il processo di PowerShell e reindirizza l'output al Process.txt file. Il comando viene inviato al computer remoto e il file viene salvato nel computer remoto.

Il terzo comando usa la parola chiave Exit per terminare la sessione interattiva e chiudere la connessione. Il quarto comando conferma che il file Process.txt si trova nel computer remoto. Un Get-ChildItem comando ("dir") nel computer locale non riesce a trovare il file.

PS C:\> Enter-PSSession -ComputerName Server01
[Server01]: PS C:\>
[Server01]: PS C:\> Get-Process PowerShell > C:\ps-test\Process.txt
[Server01]: PS C:\> exit
PS C:\>
PS C:\> dir C:\ps-test\Process.txt
Get-ChildItem : Cannot find path 'C:\ps-test\Process.txt' because it does not exist.
At line:1 char:4
+ dir <<<<  c:\ps-test\Process.txt

Questo comando mostra come operare in una sessione interattiva con un computer remoto.

Esempio 3: Usare il parametro Session

PS> $s = New-PSSession -ComputerName Server01
PS> Enter-PSSession -Session $s
[Server01]: PS>

Questi comandi usano il parametro Session di Enter-PSSession per eseguire la sessione interattiva in una sessione di PowerShell esistente (PSSession).

Esempio 4: Avviare una sessione interattiva e specificare i parametri Port e Credential

PS> Enter-PSSession -ComputerName Server01 -Port 90 -Credential Domain01\User01
[Server01]: PS>

Questo comando avvia una sessione interattiva nel computer Server01. Usa il parametro Port per specificare la porta e il parametro Credential per specificare l'account di un utente autorizzato a connettersi al computer remoto.

Esempio 5: Arrestare una sessione interattiva

PS> Enter-PSSession -ComputerName Server01
[Server01]: PS> Exit-PSSession
PS>

Questo esempio mostra come avviare e arrestare una sessione interattiva. Il primo comando usa il Enter-PSSession cmdlet per avviare una sessione interattiva con il computer Server01.

Il secondo comando usa il Exit-PSSession cmdlet per terminare la sessione. È anche possibile usare la parola chiave Exit per terminare la sessione interattiva. Exit-PSSession e Exit hanno lo stesso effetto.

Parametri

-AllowRedirection

Consente il reindirizzamento della connessione a un URI (Uniform Resource Identifier) alternativo. Per impostazione predefinita, il reindirizzamento non è consentito.

Quando si usa il parametro ConnectionURI , la destinazione remota può restituire un'istruzione per il reindirizzamento a un URI diverso. Per impostazione predefinita, PowerShell non reindirizza le connessioni, ma è possibile usare questo parametro per consentire il reindirizzamento della connessione.

È anche possibile limitare il numero di reindirizzamenti della connessione modificando il valore dell'opzione di sessione MaximumConnectionRedirectionCount . Utilizzare il parametro MaximumRedirection del New-PSSessionOption cmdlet o impostare la proprietà MaximumConnectionRedirectionCount della $PSSessionOption variabile di preferenza. Il valore predefinito è 5.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-ApplicationName

Specifica il segmento dell'URI di connessione corrispondente al nome dell'applicazione. Usare questo parametro per specificare il nome dell'applicazione quando non si usa il parametro ConnectionURI nel comando .

Il valore predefinito è il valore della variabile di $PSSessionApplicationName preferenza nel computer locale. Se questa variabile di preferenza non è definita, il valore predefinito è WSMAN. Questo valore è appropriato per la maggior parte degli utilizzi. Per altre informazioni, vedere about_Preference_Variables.

Il servizio WinRM usa il nome dell'applicazione per selezionare un listener per gestire la richiesta di connessione. Il valore di questo parametro deve corrispondere al valore della proprietà URLPrefix di un listener nel computer remoto.

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-Authentication

Specifica il meccanismo usato per autenticare le credenziali dell'utente. I valori validi per questo parametro sono:

  • Predefiniti
  • Di base
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

Il valore predefinito è Default.

L'autenticazione CredSSP è disponibile solo in Windows Vista, Windows Server 2008 e versioni successive del sistema operativo Windows.

Per altre informazioni sui valori di questo parametro, vedere AuthenticationMechanism Enum.

Attenzione

L'autenticazione credSSP (Credential Security Support Provider), in cui le credenziali dell'utente vengono passate a un computer remoto da autenticare, è progettato per i comandi che richiedono l'autenticazione su più di una risorsa, ad esempio l'accesso a una condivisione di rete remota. Questo meccanismo aumenta il rischio per la sicurezza dell'operazione remota. Se infatti il computer remoto viene compromesso, le credenziali che gli vengono passate possono essere usate per controllare la sessione di rete.

Tipo:AuthenticationMechanism
Valori accettati:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-CertificateThumbprint

Specifica il certificato di chiave pubblica digitale (X509) di un account utente con autorizzazione per l'esecuzione di questa azione. Immettere l'identificazione personale del certificato.

I certificati vengono usati nell'autenticazione basata sui certificati client. Possono essere mappati solo ad account utente locali. Non funzionano con gli account di dominio.

Per ottenere un certificato, usare il Get-Item comando o Get-ChildItem nell'unità Certificato di PowerShell: .

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-ComputerName

Specifica un nome computer. Questo cmdlet avvia una sessione interattiva con il computer remoto specificato. Immettere un solo nome di computer. Il valore predefinito è il computer locale.

Digitare il nome NetBIOS, l'indirizzo IP o il nome di dominio completo del computer remoto. È anche possibile inviare tramite pipe un nome computer a Enter-PSSession.

Per usare un indirizzo IP nel valore del parametro ComputerName , il comando deve includere il parametro Credential . Inoltre, il computer deve essere configurato per il trasporto HTTPS o l'indirizzo IP del computer remoto deve essere incluso nell'elenco TrustedHosts di Gestione remota Windows nel computer locale. Per istruzioni sull'aggiunta di un nome computer all'elenco TrustedHosts, vedere "Come aggiungere un computer all'elenco host attendibile" in about_Remote_Troubleshooting.

Nota

Nel sistema operativo Windows, per includere il computer locale nel valore del parametro ComputerName , è necessario avviare PowerShell con l'opzione Esegui come amministratore.

Tipo:String
Alias:Cn
Posizione:0
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-ConfigurationName

Specifica la configurazione di sessione usata per la sessione interattiva.

Immettere un nome di configurazione o l'URI di risorsa completo per una configurazione di sessione. Se si specifica solo il nome di configurazione, viene anteporto l'URI dello schema seguente: http://schemas.microsoft.com/powershell.

La configurazione di sessione per una sessione si trova nel computer remoto. Se la configurazione di sessione specificata non esiste nel computer remoto, il comando ha esito negativo.

Il valore predefinito è il valore della variabile di $PSSessionConfigurationName preferenza nel computer locale. Se questa variabile di preferenza non è impostata, il valore predefinito è Microsoft.PowerShell. Per altre informazioni, vedere about_Preference_Variables.

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-ConnectionUri

Specifica un URI che definisce l'endpoint di connessione per la sessione. L'URI deve essere completo. Il formato di questa stringa è il seguente:

<Transport>://<ComputerName>:<Port>/<ApplicationName>

Il valore predefinito è il seguente:

http://localhost:5985/WSMAN

Se non si specifica un ConnectionURI, è possibile usare i parametri UseSSL, ComputerName, Port e ApplicationName per specificare i valori ConnectionURI.

I valori validi per il segmento Trasporto dell'URI sono HTTP e HTTPS. Se si specifica un URI di connessione con un segmento Trasporto, ma non si specifica una porta, la sessione viene creata usando le porte standard: 80 per HTTP e 443 per HTTPS. Per usare le porte predefinite per la comunicazione remota di PowerShell, specificare la porta 5985 per HTTP o 5986 per HTTPS.

Se il computer di destinazione reindirizza la connessione a un URI diverso, PowerShell impedisce il reindirizzamento a meno che non si usi il parametro AllowRedirection nel comando .

Tipo:Uri
Alias:URI, CU
Posizione:1
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-ContainerId

Specifica l'ID di un contenitore.

Tipo:String
Posizione:0
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-Credential

Specifica un account utente che dispone delle autorizzazioni per eseguire questa azione. Il valore predefinito è l'utente corrente.

Digitare un nome utente, ad esempio User01 o Domain01\User01, oppure immettere un oggetto PSCredential generato dal Get-Credential cmdlet. Se si digita un nome utente, viene richiesto di immettere la password.

Le credenziali vengono archiviate in un oggetto PSCredential e la password viene archiviata come SecureString.

Nota

Per altre informazioni sulla protezione dei dati SecureString , vedere How secure is SecureString?.

Tipo:PSCredential
Posizione:1
Valore predefinito:Current user
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-EnableNetworkAccess

Indica che questo cmdlet aggiunge un token di sicurezza interattivo alle sessioni di loopback. Il token interattivo consente di eseguire comandi nella sessione di loopback che ottengono dati da altri computer. Ad esempio, è possibile eseguire un comando nella sessione che copia file XML da un computer remoto al computer locale.

Una sessione di loopback è una sessione PSSession che ha origine e termina nello stesso computer. Per creare una sessione di loopback, omettere il parametro ComputerName o impostarne il valore su . (punto), localhost o il nome del computer locale.

Per impostazione predefinita, le sessioni di loopback vengono create usando un token di rete, che potrebbe non fornire autorizzazioni sufficienti per l'autenticazione nei computer remoti.

Il parametro EnableNetworkAccess è efficace solo nelle sessioni di loopback. Se si usa EnableNetworkAccess quando si crea una sessione in un computer remoto, il comando ha esito positivo, ma il parametro viene ignorato.

È anche possibile consentire l'accesso remoto in una sessione di loopback usando il valore CredSSP del parametro Authentication , che delega le credenziali di sessione ad altri computer.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Id

Specifica l'ID di una sessione esistente. Enter-PSSession utilizza la sessione specificata per la sessione interattiva.

Per trovare l'ID di una sessione, usare il Get-PSSession cmdlet .

Tipo:Int32
Posizione:0
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-InstanceId

Specifica l'ID dell'istanza di una sessione esistente. Enter-PSSession utilizza la sessione specificata per la sessione interattiva.

L'ID dell'istanza è un GUID. Per trovare l'ID istanza di una sessione, usare il Get-PSSession cmdlet . È anche possibile usare i parametri Session, Name o ID per specificare una sessione esistente. In alternativa, è possibile usare il parametro ComputerName per avviare una sessione temporanea.

Tipo:Guid
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-Name

Specifica il nome descrittivo di una sessione esistente. Enter-PSSession utilizza la sessione specificata per la sessione interattiva.

Se il nome specificato corrisponde a più di una sessione, il comando non riesce. È anche possibile usare i parametri Session, InstanceID o ID per specificare una sessione esistente. In alternativa, è possibile usare il parametro ComputerName per avviare una sessione temporanea.

Per stabilire un nome descrittivo per una sessione, usare il parametro Name del New-PSSession cmdlet .

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-Port

Specifica la porta di rete nel computer remoto usato per questo comando. Per connettersi a un computer remoto, è necessario che il computer remoto sia in attesa sulla porta usata dalla connessione. Le porte predefinite sono 5985, ovvero la porta WinRM per HTTP e 5986, ovvero la porta WinRM per HTTPS.

Prima di usare una porta alternativa, è necessario configurare il listener di Gestione remota Windows nel computer remoto per l'ascolto su tale porta. Usare i comandi seguenti per configurare il listener:

  1. winrm delete winrm/config/listener?Address=*+Transport=HTTP
  2. winrm create winrm/config/listener?Address=*+Transport=HTTP @{Port="\<port-number\>"}

Non usare il parametro Port a meno che non sia necessario. L'impostazione della porta nel comando si applica a tutti i computer o tutte le sessioni in cui viene eseguito il comando. Un'impostazione di porta alternativa potrebbe impedire l'esecuzione del comando in tutti i computer.

Tipo:Int32
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-RunAsAdministrator

Indica che la sessione PSSession viene eseguita come amministratore.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Session

Specifica una sessione di PowerShell (PSSession) da usare per la sessione interattiva. Questo parametro accetta un oggetto sessione. È anche possibile usare i parametri Name, InstanceID o ID per specificare una sessione PSSession.

Immettere una variabile contenente un oggetto sessione o un comando che crea o ottiene un oggetto sessione, ad esempio un New-PSSession comando o Get-PSSession . È anche possibile inviare tramite pipe un oggetto sessione a Enter-PSSession. È possibile inviare una sola sessione PSSession usando questo parametro. Se si immette una variabile contenente più di una sessione PSSession, il comando ha esito negativo.

Quando si usa Exit-PSSession o la parola chiave EXIT , la sessione interattiva termina, ma la sessione PSSession creata rimane aperta e disponibile per l'uso.

Tipo:PSSession
Posizione:0
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-SessionOption

Imposta opzioni avanzate per la sessione. Immettere un oggetto SessionOption , ad esempio quello creato usando il New-PSSessionOption cmdlet o una tabella hash in cui le chiavi sono nomi di opzioni di sessione e i valori sono valori di opzione di sessione.

I valori predefiniti per le opzioni sono determinati dal valore della variabile di $PSSessionOption preferenza, se impostato. In caso contrario, i valori predefiniti vengono stabiliti dalle opzioni impostate nella configurazione di sessione.

I valori delle opzioni di sessione hanno la precedenza sui valori predefiniti per le sessioni impostate nella $PSSessionOption variabile di preferenza e nella configurazione della sessione. Tuttavia, non hanno la precedenza sui valori massimi, sulle quote o sui limiti impostati nella configurazione della sessione.

Per una descrizione delle opzioni di sessione, inclusi i valori predefiniti, vedere New-PSSessionOption. Per informazioni sulla $PSSessionOption variabile di preferenza, vedere about_Preference_Variables. Per altre informazioni sulle configurazioni di sessione, vedere about_Session_Configurations.

Tipo:PSSessionOption
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-UseSSL

Indica che questo cmdlet usa il protocollo SSL (Secure Sockets Layer) per stabilire una connessione al computer remoto. Per impostazione predefinita, SSL non viene usato.

WS-Management crittografa tutto il contenuto di PowerShell trasmesso in rete. Il parametro UseSSL è una protezione aggiuntiva che invia i dati attraverso una connessione HTTPS anziché una connessione HTTP.

Se si usa questo parametro, ma SSL non è disponibile sulla porta usata per il comando, il comando ha esito negativo.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-VMId

Specifica l'ID di una macchina virtuale.

Tipo:Guid
Alias:VMGuid
Posizione:0
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-VMName

Specifica il nome di una macchina virtuale.

Tipo:String
Posizione:0
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

Input

String

È possibile inviare tramite pipe un nome computer come stringa a questo cmdlet.

PSSession

È possibile inviare tramite pipe un oggetto sessione a questo cmdlet.

Output

None

Questo cmdlet non restituisce output.

Note

Windows PowerShell include gli alias seguenti per Enter-PSSession:

  • etsn

Per connettersi a un computer remoto, è necessario essere un membro del gruppo Administrators in tale computer remoto. Per avviare una sessione interattiva nel computer locale, è necessario avviare PowerShell con l'opzione Esegui come amministratore .

Quando si usa Enter-PSSession, il profilo utente nel computer remoto viene usato per la sessione interattiva. I comandi nel profilo utente remoto, inclusi i comandi per aggiungere moduli di PowerShell e per modificare il prompt dei comandi, eseguire prima che venga visualizzato il prompt remoto.

Enter-PSSession usa l'impostazione delle impostazioni cultura dell'interfaccia utente nel computer locale per la sessione interattiva. Per trovare le impostazioni cultura dell'interfaccia utente locali, usare la $UICulture variabile automatica.

Enter-PSSession richiede i Get-Commandcmdlet , Out-Defaulte Exit-PSSession . Se questi cmdlet non sono inclusi nella configurazione della sessione nel computer remoto, i Enter-PSSession comandi hanno esito negativo.

A differenza di Invoke-Command, che analizza e interpreta i comandi prima di inviarli al computer remoto, Enter-PSSession invia i comandi direttamente al computer remoto senza interpretazione.

Se la sessione da immettere è occupata nell'elaborazione di un comando, potrebbe verificarsi un ritardo prima che PowerShell risponda al Enter-PSSession comando. Si è connessi non appena la sessione è disponibile. Per annullare il Enter-PSSession comando, premere CTRL+C.