Informazioni sulle sessioni remote disconnesseAbout Remote Disconnected Sessions

Breve descrizioneShort description

Viene illustrato come disconnettersi e riconnettersi a una sessione di PowerShell (PSSession).Explains how to disconnect and reconnect to a PowerShell Session (PSSession).

Descrizione lungaLong description

A partire da PowerShell 3,0, è possibile disconnettersi da una sessione PSSession e riconnettersi alla sessione PSSession nello stesso computer o in un computer diverso.Beginning in PowerShell 3.0, you can disconnect from a PSSession and reconnect to the PSSession on the same computer or a different computer. Lo stato della sessione viene mantenuto e i comandi nella sessione PSSession continuano a essere eseguiti mentre la sessione è disconnessa.The session state is maintained and commands in the PSSession continue to run while the session is disconnected.

La funzionalità delle sessioni disconnesse è disponibile solo quando il computer remoto esegue PowerShell 3,0 o versione successiva.The Disconnected Sessions feature is only available when the remote computer is running PowerShell 3.0 or a later version.

La funzionalità sessioni disconnesse consente di chiudere la sessione in cui è stata creata una sessione PSSession e persino di chiudere PowerShell e arrestare il computer senza interrompere i comandi in esecuzione nella sessione PSSession.The Disconnected Sessions feature allows you to close the session in which a PSSession was created, and even close PowerShell, and shut down the computer, without disrupting commands running in the PSSession. Le sessioni disconnesse sono utili per l'esecuzione di comandi che richiedono un tempo prolungato per il completamento e forniscono il tempo e la flessibilità dei dispositivi richiesti dai professionisti IT.Disconnected sessions are useful for running commands that take an extended time to complete, and provides the time and device flexibility that IT professionals require.

Non è possibile disconnettersi da una sessione interattiva avviata con il Enter-PSSession cmdlet.You can't disconnect from an interactive session that is started by using the Enter-PSSession cmdlet.

È possibile utilizzare le sessioni disconnesse per gestire le sessioni PSSession disconnesse involontariamente in seguito a un'interruzione della rete o del computer.You can use disconnected sessions to manage PSSessions that were disconnected unintentionally as the result of a computer or network outage.

Nel mondo reale, la funzionalità delle sessioni disconnesse consente di iniziare a risolvere un problema, rivolgere l'attenzione a un problema con priorità più alta e quindi riprendere il lavoro sulla soluzione, anche in un computer diverso in una posizione diversa.In real-world use, the Disconnected Sessions feature allows you to begin solving a problem, turn your attention to a higher priority issue, and then resume work on the solution, even on a different computer in a different location.

Cmdlet della sessione disconnessaDisconnected session cmdlets

I cmdlet seguenti supportano la funzionalità delle sessioni disconnesse:The following cmdlets support the Disconnected Sessions feature:

  • Connect-PSSession: Si connette a una sessione PSSession disconnessa.Connect-PSSession: Connects to a disconnected PSSession.
  • Disconnect-PSSession: Disconnette una sessione PSSession.Disconnect-PSSession: Disconnects a PSSession.
  • Get-PSSession: Ottiene le sessioni PSSession nel computer locale o nei computer remoti.Get-PSSession: Gets PSSessions on the local computer or on remote computers.
  • Receive-PSSession: Ottiene i risultati dei comandi eseguiti nelle sessioni disconnesse.Receive-PSSession: Gets the results of commands that ran in disconnected sessions.
  • Invoke-Command: Il parametro InDisconnectedSession crea una sessione PSSession e si disconnette immediatamente.Invoke-Command: InDisconnectedSession parameter creates a PSSession and disconnects immediately.

Funzionamento della funzionalità delle sessioni disconnesseHow the Disconnected Sessions feature works

A partire da PowerShell 3,0, le sessioni PSSession sono indipendenti dalle sessioni in cui sono state create.Beginning in PowerShell 3.0, PSSessions are independent of the sessions in which they're created. Le sessioni PSSession attive vengono mantenute nel computer remoto o sul lato server della connessione, anche se la sessione in cui è stata creata la sessione PSSession è chiusa e il computer di origine viene arrestato o disconnesso dalla rete.Active PSSessions are maintained on the remote computer or server-side of the connection, even if the session in which the PSSession was created is closed and the originating computer is shut down or disconnected from the network.

In PowerShell 2,0, la sessione PSSession viene eliminata dal computer remoto quando è disconnessa dalla sessione di origine o dalla sessione in cui è stata creata.In PowerShell 2.0, the PSSession is deleted from the remote computer when it's disconnected from the originating session or the session in which it was created ends.

Quando si disconnette una sessione PSSession, la sessione PSSession rimane attiva e viene mantenuta nel computer remoto.When you disconnect a PSSession, the PSSession remains active and is maintained on the remote computer. Lo stato della sessione passa da in esecuzione a disconnesso.The session state changes from Running to Disconnected. È possibile riconnettersi a una sessione PSSession disconnessa dalla sessione corrente o da un'altra sessione nello stesso computer o da un altro computer.You can reconnect to a disconnected PSSession from the current session or from a different session on the same computer, or from a different computer. Il computer remoto che gestisce la sessione deve essere in esecuzione e connesso alla rete.The remote computer that maintains the session must be running and be connected to the network.

I comandi in una sessione PSSession disconnessa continuano a essere eseguiti senza interruzioni nel computer remoto fino al completamento del comando o al riempimento del buffer di output.Commands in a disconnected PSSession continue to run uninterrupted on the remote computer until the command completes or the output buffer fills. Per impedire a un buffer di output completo di sospendere un comando, OutputBufferingMode usare il parametro OutputBufferingMode Disconnect-PSSession dei New-PSSessionOption cmdlet, o New-PSTransportOption .To prevent a full output buffer from suspending a command, use the OutputBufferingMode parameter of the Disconnect-PSSession, New-PSSessionOption, or New-PSTransportOption cmdlets.

Le sessioni disconnesse vengono mantenute nello stato disconnesso nel computer remoto.Disconnected sessions are maintained in the disconnected state on the remote computer. Sono disponibili per la riconnessione, fino a quando non si elimina la sessione PSSession, ad esempio usando il Remove-PSSession cmdlet, o fino a quando non scade il timeout di inattività della sessione PSSession.They're available for you to reconnect, until you delete the PSSession, such as by using the Remove-PSSession cmdlet, or until the idle timeout of the PSSession expires. È possibile modificare il timeout di inattività di una sessione PSSession usando i parametri IdleTimeoutSec o IdleTimeout dei Disconnect-PSSession New-PSSessionOption cmdlet, o New-PSTransportOption .You can adjust the idle timeout of a PSSession by using the IdleTimeoutSec or IdleTimeout parameters of the Disconnect-PSSession, New-PSSessionOption, or New-PSTransportOption cmdlets.

Un altro utente può connettersi alle sessioni PSSession create, ma solo se possono fornire le credenziali utilizzate per creare la sessione o utilizzare le RunAs credenziali della configurazione di sessione.Another user can connect to PSSessions that you created, but only if they can provide the credentials that were used to create the session, or use the RunAs credentials of the session configuration.

Come ottenere le sessioni PSSessionHow to get PSSessions

A partire da PowerShell 3,0, il Get-PSSession cmdlet ottiene le sessioni PSSession nel computer locale e nei computer remoti.Beginning in PowerShell 3.0, the Get-PSSession cmdlet gets PSSessions on the local computer and remote computers. Può inoltre ottenere le sessioni PSSession create nella sessione corrente.It can also get PSSessions that were created in the current session.

Per ottenere le sessioni PSSession nel computer locale o nei computer remoti, usare i parametri ComputerName o ConnectionURI .To get PSSessions on the local computer or remote computers, use the ComputerName or ConnectionUri parameters. Senza parametri, Get-PSSession ottiene la sessione PSSession che è stata creata nella sessione locale, indipendentemente da dove vengono terminate.Without parameters, Get-PSSession gets PSSession that were created in the local session, regardless of where they terminate.

Quando si recuperano le sessioni PSSession, ricordarsi di cercarle nel computer in cui sono gestite, ovvero sul computer remoto o sul lato server .When getting PSSessions, remember to look for them on the computer on which they're maintained, that is, the remote or server-side computer.

Se, ad esempio, si crea una sessione PSSession nel computer Server01, ottenere la sessione dal computer Server01.For example, if you create a PSSession to the Server01 computer, get the session from the Server01 computer. Se si crea una sessione PSSession da un altro computer al computer locale, recuperare la sessione dal computer locale.If you create a PSSession from another computer to the local computer, get the session from the local computer.

La sequenza di comandi seguente illustra il Get-PSSession funzionamento di.The following command sequence shows how Get-PSSession works.

Il primo comando crea una sessione nel computer Server01.The first command creates a session to the Server01 computer. La sessione si trova nel computer Server01.The session resides on the Server01 computer.

New-PSSession -ComputerName Server01
Id Name      ComputerName  State    ConfigurationName     Availability
-- ----      ------------  -----    -----------------     ------------
 2 Session2  Server01      Opened   Microsoft.PowerShell     Available

Per ottenere la sessione, usare il parametro ComputerName di Get-PSSession con il valore Server01.To get the session, use the ComputerName parameter of Get-PSSession with a value of Server01.

Get-PSSession -ComputerName Server01
Id Name      ComputerName  State    ConfigurationName     Availability
-- ----      ------------  -----    -----------------     ------------
 2 Session2  Server01      Opened   Microsoft.PowerShell     Available

Se il valore del parametro ComputerName di Get-PSSession è localhost, Get-PSSession ottiene le sessioni PSSession che terminano in e vengono mantenute nel computer locale.If the value of the ComputerName parameter of Get-PSSession is localhost, Get-PSSession gets PSSessions that terminate at and are maintained on the local computer. Non ottiene le sessioni PSSession nel computer Server01, anche se sono state avviate nel computer locale.It doesn't get PSSessions on the Server01 computer, even if they were started on the local computer.

Get-PSSession -ComputerName localhost

Per ottenere le sessioni create nella sessione corrente, usare il Get-PSSession cmdlet senza parametri.To get sessions that were created in the current session, use the Get-PSSession cmdlet without parameters. In questo esempio, Get-PSSession ottiene la sessione PSSession creata nella sessione corrente e si connette al computer Server01.In this example, Get-PSSession gets the PSSession that was created in the current session and connects to the Server01 computer.

Get-PSSession
Id Name      ComputerName  State    ConfigurationName     Availability
-- ----      ------------  -----    -----------------     ------------
 2 Session2  Server01      Opened   Microsoft.PowerShell     Available

Come disconnettere le sessioniHow to disconnect sessions

Per disconnettere una sessione PSSession, usare il Disconnect-PSSession cmdlet.To disconnect a PSSession, use the Disconnect-PSSession cmdlet. Per identificare la sessione PSSession, usare il parametro Session o eseguire la pipeline di una sessione PSSession dai New-PSSession Get-PSSession cmdlet o a Disconnect-PSSession .To identify the PSSession, use the Session parameter, or pipeline a PSSession from the New-PSSession or Get-PSSession cmdlets to Disconnect-PSSession.

Il comando seguente disconnette la sessione PSSession nel computer Server01.The following command disconnects the PSSession to the Server01 computer. Si noti che il valore della proprietà state è disconnected e la disponibilità è None.Notice that the value of the State property is Disconnected and the Availability is None.

Get-PSSession -ComputerName Server01 | Disconnect-PSSession
Id Name      ComputerName  State         ConfigurationName     Availability
-- ----      ------------  -----         -----------------     ------------
 2 Session2  Server01      Disconnected  Microsoft.PowerShell          None

Per creare una sessione disconnessa, usare il parametro InDisconnectedSession del Invoke-Command cmdlet.To create a disconnected session, use the InDisconnectedSession parameter of the Invoke-Command cmdlet. Crea una sessione, avvia il comando e si disconnette immediatamente prima che il comando possa restituire qualsiasi output.It creates a session, starts the command, and disconnects immediately, before the command can return any output.

Il comando seguente esegue un Get-WinEvent comando in una sessione disconnessa nel computer remoto Server02.The following command runs a Get-WinEvent command in a disconnected session on the Server02 remote computer.

Invoke-Command -ComputerName Server02 -InDisconnectedSession -ScriptBlock {
   Get-WinEvent -LogName "*PowerShell*" }
Id Name      ComputerName  State         ConfigurationName     Availability
-- ----      ------------  -----         -----------------     ------------
 4 Session3  Server02      Disconnected  Microsoft.PowerShell          None

Come connettersi alle sessioni disconnesseHow to connect to disconnected sessions

È possibile connettersi a qualsiasi sessione PSSession disconnessa disponibile dalla sessione in cui è stata creata la sessione PSSession o da altre sessioni nel computer locale o in altri computer.You can connect to any available disconnected PSSession from the session in which you created the PSSession or from other sessions on the local computer or other computers.

È possibile creare una sessione PSSession, eseguire i comandi nella sessione PSSession, disconnettersi dalla sessione PSSession, chiudere PowerShell e arrestare il computer.You can create a PSSession, run commands in the PSSession, disconnect from the PSSession, close PowerShell, and shut down the computer. In seguito, è possibile aprire un altro computer, ottenere la sessione PSSession, connettersi e ottenere i risultati dei comandi eseguiti nella sessione PSSession mentre era disconnessa.Hours later, you can open a different computer, get the PSSession, connect to it, and get the results of commands that ran in the PSSession while it was disconnected. Quindi è possibile eseguire più comandi nella sessione.Then you can run more commands in the session.

Per connettere una sessione PSSession disconnessa, usare il Connect-PSSession cmdlet.To connect a disconnected PSSession, use the Connect-PSSession cmdlet. Usare i parametri ComputerName o ConnectionURI per identificare la sessione PSSession o la pipeline di una sessione PSSession da Get-PSSession a Connect-PSSession .Use the ComputerName or ConnectionUri parameters to identify the PSSession, or pipeline a PSSession from Get-PSSession to Connect-PSSession.

Il comando seguente consente di ottenere le sessioni nel computer Server02.The following command gets the sessions on the Server02 computer. L'output include due sessioni disconnesse, entrambe disponibili.The output includes two disconnected sessions, both of which are available.

Get-PSSession -ComputerName Server02
Id Name      ComputerName   State         ConfigurationName     Availability
-- ----      ------------   -----         -----------------     ------------
 2 Session2  juneb-srv8320  Disconnected  Microsoft.PowerShell          None
 4 Session3  juneb-srv8320  Disconnected  Microsoft.PowerShell          None

Il comando seguente consente di connettersi a Session2.The following command connects to Session2. La sessione PSSession è ora aperta e disponibile.The PSSession is now open and available.

Connect-PSSession -ComputerName Server02 -Name Session2
Id Name      ComputerName    State    ConfigurationName     Availability
-- ----      ------------    -----    -----------------     ------------
 2 Session2  juneb-srv8320   Opened   Microsoft.PowerShell     Available

Come ottenere i risultatiHow to get the results

Per ottenere i risultati dei comandi eseguiti in una sessione PSSession disconnessa, usare il Receive-PSSession cmdlet.To get the results of commands that ran in a disconnected PSSession, use the Receive-PSSession cmdlet.

È possibile utilizzare Receive-PSSession invece di utilizzare il Connect-PSSession cmdlet.You can use Receive-PSSession rather than using the Connect-PSSession cmdlet. Se la sessione è già stata riconnessa, Receive-PSSession ottiene i risultati dei comandi eseguiti quando la sessione è stata disconnessa.If the session is already reconnected, Receive-PSSession gets the results of commands that ran when the session was disconnected. Se la sessione PSSession è ancora disconnessa, Receive-PSSession vi si connette e quindi ottiene i risultati dei comandi eseguiti durante la disconnessione.If the PSSession is still disconnected, Receive-PSSession connects to it and then gets the results of commands that ran while it was disconnected.

Receive-PSSession può restituire i risultati in un processo (in modo asincrono) o nel programma host (in modo sincrono).Receive-PSSession can return the results in a job (asynchronously) or to the host program (synchronously). Usare il parametro outtarget per selezionare il processo o l' host.Use the OutTarget parameter to select Job or Host. Il valore predefinito è host.The default value is Host. Tuttavia, se il comando ricevuto è stato avviato nella sessione corrente come processo , per impostazione predefinita viene restituito come processo .However, if the command that's being received was started in the current session as a Job , it's returned as a Job by default.

Il comando seguente usa il Receive-PSSession cmdlet per connettersi alla sessione PSSession nel computer Server02 e ottenere i risultati del Get-WinEvent comando eseguito nella sessione SESSION3.The following command uses the Receive-PSSession cmdlet to connect to the PSSession on the Server02 computer and get the results of the Get-WinEvent command that ran in the Session3 session. Il comando usa il parametro outtarget per ottenere i risultati in un processo.The command uses the OutTarget parameter to get the results in a Job.

Receive-PSSession -ComputerName Server02 -Name Session3 -OutTarget Job
Id   Name   PSJobTypeName   State         HasMoreData     Location
--   ----   -------------   -----         -----------     --------
 3   Job3   RemoteJob       Running       True            Server02

Per ottenere i risultati del processo, usare il Receive-Job cmdlet.To get the job's results, use the Receive-Job cmdlet.

Get-Job | Receive-Job -Keep
ProviderName: PowerShell

TimeCreated             Id LevelDisplayName Message     PSComputerName
-----------             -- ---------------- -------     --------------
5/14/2012 7:26:04 PM   400 Information      Engine stat Server02
5/14/2012 7:26:03 PM   600 Information      Provider "W Server02
5/14/2012 7:26:03 PM   600 Information      Provider "C Server02
5/14/2012 7:26:03 PM   600 Information      Provider "V Server02

Proprietà stato e disponibilitàState and Availability properties

Le proprietà stato e disponibilità di una sessione PSSession disconnessa indicano se la sessione è disponibile per la riconnessione.The State and Availability properties of a disconnected PSSession tell you whether the session is available for you to reconnect to it.

Quando una sessione PSSession è connessa alla sessione corrente, il suo stato viene aperto e la relativa disponibilità è disponibile.When a PSSession is connected to the current session, its state is Opened and its availability is Available. Quando si esegue la disconnessione dalla sessione PSSession, lo stato della sessione PSSession è disconnected e la relativa disponibilità è None.When you disconnect from the PSSession, the PSSession state is Disconnected and its availability is None.

Il valore della proprietà State è relativo alla sessione corrente.The value of the State property is relative to the current session. Il valore disconnected significa che la sessione PSSession non è connessa alla sessione corrente.A value of Disconnected means that the PSSession isn't connected to the current session. Ma non significa che la sessione PSSession sia disconnessa da tutte le sessioni.But, it doesn't mean that the PSSession is disconnected from all sessions. È possibile che sia connessa a una sessione diversa.It might be connected to a different session.

Per determinare se è possibile connettersi o riconnettersi alla sessione PSSession, utilizzare la proprietà Availability .To determine whether you can connect or reconnect to the PSSession, use the Availability property. Il valore None indica che è possibile connettersi alla sessione.A value of None indicates that you can connect to the session. Il valore busy indica che non è possibile connettersi alla sessione PSSession perché è connessa a un'altra sessione.A value of Busy indicates that you can't connect to the PSSession because it's connected to another session.

L'esempio seguente viene eseguito in due sessioni di PowerShell nello stesso computer.The following example is run in two PowerShell sessions on the same computer. Si notino i valori modificabili delle proprietà state e Availability in ogni sessione, perché la sessione PSSession è disconnessa e riconnessa.Note the changing values of the State and Availability properties in each session as the PSSession is disconnected and reconnected.

# Session 1
New-PSSession -ComputerName Server30 -Name Test
Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
1  Test   Server30        Opened        Microsoft.PowerShell     Available
# Session 2
Get-PSSession -ComputerName Server30 -Name Test
Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
1 Test    Server30        Disconnected  Microsoft.PowerShell          Busy
# Session 1
Get-PSSession -ComputerName Server30 -Name Test | Disconnect-PSSession
Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
1 Test    Server30        Disconnected  Microsoft.PowerShell          None
# Session 2
Get-PSSession -ComputerName Server30
Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
1 Test    Server30        Disconnected  Microsoft.PowerShell          None
# Session 2
Connect-PSSession -ComputerName Server30 -Name Test
Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
3 Test    Server30        Opened        Microsoft.PowerShell     Available
# Session 1
Get-PSSession -ComputerName Server30
Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
1 Test    Server30        Disconnected  Microsoft.PowerShell          Busy
# Idle Timeout

Le sessioni disconnesse vengono mantenute nel computer remoto fino a quando non vengono eliminate, ad esempio tramite il Remove-PSSession cmdlet, oppure si sono esaurite. La proprietà IdleTimeout di una sessione PSSession determina per quanto tempo una sessione disconnessa viene mantenuta prima di essere eliminata.Disconnected sessions are maintained on the remote computer until you delete them, such as by using the Remove-PSSession cmdlet, or they time out. The IdleTimeout property of a PSSession determines how long a disconnected session is maintained before it's deleted.

Le sessioni PSSession sono inattive quando il thread heartbeat non riceve alcuna risposta.PSSessions are idle when the heartbeat thread receives no response. La disconnessione di una sessione lo rende inattiva e avvia il clock IdleTimeout , anche se i comandi sono ancora in esecuzione nella sessione disconnessa.Disconnecting a session makes it idle and starts the IdleTimeout clock, even if commands are still running in the disconnected session. PowerShell considera le sessioni disconnesse come attive, ma inattive.PowerShell considers disconnected sessions to be active, but idle.

Quando si creano e si disconnettono le sessioni, verificare che il timeout di inattività nella sessione PSSession sia sufficientemente lungo da mantenere la sessione in base alle esigenze, ma non tanto tempo che utilizzi risorse superflue nel computer remoto.When creating and disconnecting sessions, verify that the idle timeout in the PSSession is long enough to maintain the session for your needs, but not so long that it consumes unnecessary resources on the remote computer.

La proprietà IdleTimeoutMs della configurazione di sessione determina il timeout di inattività predefinito per le sessioni che usano la configurazione di sessione.The IdleTimeoutMs property of the session configuration determines the default idle timeout of sessions that use the session configuration. È possibile eseguire l'override del valore predefinito, ma il valore usato non può superare la proprietà MaxIdleTimeoutMs della configurazione di sessione.You can override the default value, but the value that you use can't exceed the MaxIdleTimeoutMs property of the session configuration.

Per trovare il valore dei valori IdleTimeoutMs e MaxIdleTimeoutMs di una configurazione di sessione, usare il seguente formato di comando.To find the value of the IdleTimeoutMs and MaxIdleTimeoutMs values of a session configuration, use the following command format.

Get-PSSessionConfiguration |
  Format-Table Name, IdleTimeoutMs, MaxIdleTimeoutMs

È possibile eseguire l'override del valore predefinito nella configurazione di sessione e impostare il timeout di inattività di una sessione PSSession quando si crea una sessione PSSession e quando si esegue la disconnessione.You can override the default value in the session configuration and set the idle timeout of a PSSession when you create a PSSession and when you disconnect.

Se si è un membro del gruppo Administrators nel computer remoto, è possibile creare e modificare le proprietà IdleTimeoutMs e MaxIdleTimeoutMs delle configurazioni di sessione.If you're a member of the Administrators group on the remote computer, you can create and change the IdleTimeoutMs and MaxIdleTimeoutMs properties of session configurations.

Valori di timeout di inattivitàIdle timeout values

Il valore del timeout di inattività delle configurazioni di sessione e delle opzioni di sessione è espresso in millisecondi.The idle timeout value of session configurations and session options is in milliseconds. Il valore di timeout di inattività delle sessioni e delle opzioni di configurazione di sessione è espresso in secondi.The idle timeout value of sessions and session configuration options is in seconds.

È possibile impostare il timeout di inattività di una sessione PSSession quando si crea la sessione PSSession ( New-PSSession , Invoke-Command ) e quando si esegue la disconnessione ( Disconnect-PSSession ).You can set the idle timeout of a PSSession when you create the PSSession (New-PSSession, Invoke-Command) and when you disconnect from it (Disconnect-PSSession). Tuttavia, non è possibile modificare il valore di IdleTimeout quando ci si connette a PSSession ( Connect-PSSession ) o Get Results ( Receive-PSSession ).However, you can't change the IdleTimeout value when you connect to the PSSession (Connect-PSSession) or get results (Receive-PSSession).

I Connect-PSSession Receive-PSSession cmdlet e hanno un parametro SessionOption che accetta un oggetto SessionOption , ad esempio uno restituito dal New-PSSessionOption cmdlet.The Connect-PSSession and Receive-PSSession cmdlets have a SessionOption parameter that takes a SessionOption object, such as one returned by the New-PSSessionOption cmdlet. Il valore IdleTimeout nell'oggetto SessionOption e il valore IdleTimeout nella variabile di $PSSessionOption preferenza non modificano il valore di IdleTimeout della sessione PSSession in un Connect-PSSession comando o Receive-PSSession .The IdleTimeout value in SessionOption object and the IdleTimeout value in the $PSSessionOption preference variable don't change the value of the IdleTimeout of the PSSession in a Connect-PSSession or Receive-PSSession command.

Per creare una sessione PSSession con un valore di timeout di inattività specifico, creare una $PSSessionOption variabile di preferenza.To create a PSSession with a particular idle timeout value, create a $PSSessionOption preference variable. Impostare il valore della proprietà IdleTimeout sul valore desiderato (in millisecondi).Set the value of the IdleTimeout property to the desired value (in milliseconds).

Quando si creano sessioni PSSession, i valori nella $PSSessionOption variabile hanno la precedenza sui valori nella configurazione di sessione.When you create PSSessions, the values in $PSSessionOption variable take precedence over the values in the session configuration.

Ad esempio, il comando seguente imposta un timeout di inattività di 48 ore:For example, the following command sets an idle timeout of 48 hours:

$PSSessionOption = New-PSSessionOption -IdleTimeoutMSec 172800000

Per creare una sessione PSSession con un valore di timeout di inattività specifico, usare il parametro IdleTimeoutMSec del New-PSSessionOption cmdlet.To create a PSSession with a particular idle timeout value, use the IdleTimeoutMSec parameter of the New-PSSessionOption cmdlet. Usare quindi l'opzione Session nel valore del parametro SessionOption dei New-PSSession Invoke-Command cmdlet o.Then, use the session option in the value of the SessionOption parameter of the New-PSSession or Invoke-Command cmdlets.

I valori impostati quando si crea la sessione hanno la precedenza sui valori impostati nella $PSSessionOption variabile di preferenza e nella configurazione di sessione.The values set when creating the session take precedence over the values set in the $PSSessionOption preference variable and the session configuration.

Ad esempio:For example:

$o = New-PSSessionOption -IdleTimeoutMSec 172800000
New-PSSession -SessionOption $o

Per modificare il timeout di inattività di una sessione PSSession durante la disconnessione, usare il parametro IdleTimeoutSec del Disconnect-PSSession cmdlet.To change the idle timeout of a PSSession when disconnecting, use the IdleTimeoutSec parameter of the Disconnect-PSSession cmdlet.

Ad esempio:For example:

Disconnect-PSSession -IdleTimeoutSec 172800

Per creare una configurazione di sessione con un timeout di inattività e un tempo di inattività massimo specifici, usare i parametri IdleTimeoutSec e MaxIdleTimeoutSec del New-PSTransportOption cmdlet.To create a session configuration with a particular idle timeout and maximum idle timeout, use the IdleTimeoutSec and MaxIdleTimeoutSec parameters of the New-PSTransportOption cmdlet. Usare quindi l'opzione Transport nel valore del parametro TransportOption di Register-PSSessionConfiguration .Then, use the transport option in the value of the TransportOption parameter of Register-PSSessionConfiguration.

Ad esempio:For example:

$o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200
Register-PSSessionConfiguration -Name Test -TransportOption $o

Per modificare il timeout di inattività predefinito e il timeout massimo di inattività di una configurazione di sessione, usare i parametri IdleTimeoutSec e MaxIdleTimeoutSec del New-PSTransportOption cmdlet.To change the default idle timeout and maximum idle timeout of a session configuration, use the IdleTimeoutSec and MaxIdleTimeoutSec parameters of the New-PSTransportOption cmdlet. Usare quindi l'opzione Transport nel valore del parametro TransportOption di Set-PSSessionConfiguration .Then, use the transport option in the value of the TransportOption parameter of Set-PSSessionConfiguration.

Ad esempio:For example:

$o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200
Set-PSSessionConfiguration -Name Test -TransportOption $o

Modalità di buffering dell'outputOutput buffering mode

La modalità di buffering dell'output di una sessione PSSession determina il modo in cui viene gestito l'output del comando quando il buffer di output della sessione PSSession è pieno.The output buffering mode of a PSSession determines how command output is managed when the output buffer of the PSSession is full.

In una sessione disconnessa, la modalità di buffering dell'output determina in modo efficace se l'esecuzione del comando continua quando la sessione è disconnessa.In a disconnected session, the output buffering mode effectively determines whether the command continues to run while the session is disconnected.

I valori validi sono i seguenti:The valid values as follows:

  • Blocco.Block. Quando il buffer di output è pieno, l'esecuzione viene sospesa fino a quando il buffer non viene svuotato.When the output buffer is full, execution is suspended until the buffer is clear. Il valore predefinito.The default value.
  • Elimina.Drop. Quando il buffer di output è pieno, l'esecuzione continua.When the output buffer is full, execution continues. Quando viene generato un nuovo output, l'output meno recente viene eliminato.As new output is generated, the oldest output is discarded.

Il blocco conserva i dati, ma potrebbe interrompere il comando.Block preserves data, but might interrupt the command. Un valore Drop consente il completamento del comando, anche se i dati potrebbero andare perduti.A value of Drop allows the command to complete, although data might be lost. Quando si usa il valore Drop , reindirizzare l'output del comando in un file sul disco.When using the Drop value, redirect the command output to a file on disk. Questo valore è consigliato per le sessioni disconnesse.This value is recommended for disconnected sessions.

La proprietà OutputBufferingMode della configurazione di sessione determina la modalità di memorizzazione nel buffer di output predefinita delle sessioni che usano la configurazione di sessione.The OutputBufferingMode property of the session configuration determines the default output buffering mode of sessions that use the session configuration.

Per trovare il valore di una configurazione di sessione di OutputBufferingMode , è possibile usare uno dei seguenti formati di comando:To find a session configuration's value of the OutputBufferingMode , you can use either of the following command formats:

(Get-PSSessionConfiguration <ConfigurationName>).OutputBufferingMode
Get-PSSessionConfiguration | Format-Table Name, OutputBufferingMode

È possibile eseguire l'override del valore predefinito nella configurazione di sessione e impostare la modalità di buffering dell'output di una sessione PSSession quando si crea una sessione PSSession, quando si esegue la disconnessione e quando si riconnette.You can override the default value in the session configuration and set the output buffering mode of a PSSession when you create a PSSession, when you disconnect, and when you reconnect.

Se si è un membro del gruppo Administrators nel computer remoto, è possibile creare e modificare la modalità di buffering dell'output delle configurazioni di sessione.If you're a member of the Administrators group on the remote computer, you can create and change the output buffering mode of session configurations.

Per creare una sessione PSSession con una modalità di eliminazione del buffer di output, creare una $PSSessionOption variabile di preferenza in cui il valore della proprietà OutputBufferingMode è Drop.To create a PSSession with an output buffering mode of Drop , create a $PSSessionOption preference variable in which the value of the OutputBufferingMode property is Drop.

Quando si creano sessioni PSSession, i valori nella $PSSessionOption variabile hanno la precedenza sui valori nella configurazione di sessione.When you create PSSessions, the values in $PSSessionOption variable take precedence over the values in the session configuration.

Ad esempio:For example:

$PSSessionOption = New-PSSessionOption -OutputBufferingMode Drop

Per creare una sessione PSSession con una modalità di eliminazione del buffer di output, usare il parametro OutputBufferingMode del New-PSSessionOption cmdlet per creare un'opzione di sessione con un valore Drop.To create a PSSession with an output buffering mode of Drop , use the OutputBufferingMode parameter of the New-PSSessionOption cmdlet to create a session option with a value of Drop. Usare quindi l'opzione Session nel valore del parametro SessionOption dei New-PSSession Invoke-Command cmdlet o.Then, use the session option in the value of the SessionOption parameter of the New-PSSession or Invoke-Command cmdlets.

I valori impostati quando si crea la sessione hanno la precedenza sui valori impostati nella $PSSessionOption variabile di preferenza e nella configurazione di sessione.The values set when creating the session take precedence over the values set in the $PSSessionOption preference variable and the session configuration.

Ad esempio:For example:

$o = New-PSSessionOption -OutputBufferingMode Drop
New-PSSession -SessionOption $o

Per modificare la modalità di buffering dell'output di una sessione PSSession durante la disconnessione, usare il parametro OutputBufferingMode del Disconnect-PSSession cmdlet.To change the output buffering mode of a PSSession when disconnecting, use the OutputBufferingMode parameter of the Disconnect-PSSession cmdlet.

Ad esempio:For example:

Disconnect-PSSession -OutputBufferingMode Drop

Per modificare la modalità di buffering dell'output di una sessione PSSession durante la riconnessione, usare il parametro OutputBufferingMode del New-PSSessionOption cmdlet per creare un'opzione di sessione con un valore Drop.To change the output buffering mode of a PSSession when reconnecting, use the OutputBufferingMode parameter of the New-PSSessionOption cmdlet to create a session option with a value of Drop. Usare quindi l'opzione Session nel valore del parametro SessionOption di Connect-PSSession o Receive-PSSession .Then, use the session option in the value of the SessionOption parameter of Connect-PSSession or Receive-PSSession.

Ad esempio:For example:

$o = New-PSSessionOption -OutputBufferingMode Drop
Connect-PSSession -ComputerName Server01 -Name Test -SessionOption $o

Per creare una configurazione di sessione con una modalità di eliminazione del buffer di output predefinita, usare il parametro OutputBufferingMode del New-PSTransportOption cmdlet per creare un oggetto opzione di trasporto con un valore Drop.To create a session configuration with a default output buffering mode of Drop , use the OutputBufferingMode parameter of the New-PSTransportOption cmdlet to create a transport option object with a value of Drop. Usare quindi l'opzione Transport nel valore del parametro TransportOption di Register-PSSessionConfiguration .Then, use the transport option in the value of the TransportOption parameter of Register-PSSessionConfiguration.

Ad esempio:For example:

$o = New-PSTransportOption -OutputBufferingMode Drop
Register-PSSessionConfiguration -Name Test -TransportOption $o

Per modificare la modalità di buffering dell'output predefinita di una configurazione di sessione, usare il parametro OutputBufferingMode del New-PSTransportOption cmdlet per creare un'opzione di trasporto con un valore Drop.To change the default output buffering mode of a session configuration, use the OutputBufferingMode parameter of the New-PSTransportOption cmdlet to create a transport option with a value of Drop. Usare quindi l'opzione Transport nel valore del parametro SessionOption di Set-PSSessionConfiguration .Then, use the Transport option in the value of the SessionOption parameter of Set-PSSessionConfiguration.

Ad esempio:For example:

$o = New-PSTransportOption -OutputBufferingMode Drop
Set-PSSessionConfiguration -Name Test -TransportOption $o

Disconnessione di sessioni di loopbackDisconnecting loopback sessions

Le sessioni di loopback o le sessioni locali sono sessioni PSSession che hanno origine e terminano nello stesso computer.Loopback sessions, or local sessions, are PSSessions that originate and terminate on the same computer. Analogamente ad altre sessioni PSSession, le sessioni di loopback attive vengono gestite nel computer sul lato remoto della connessione (il computer locale), quindi è possibile disconnettersi e riconnettersi alle sessioni di loopback.Like other PSSessions, active loopback sessions are maintained on the computer on the remote end of the connection (the local computer), so you can disconnect from and reconnect to loopback sessions.

Per impostazione predefinita, le sessioni di loopback vengono create con un token di sicurezza di rete che non consente l'esecuzione di comandi nella sessione per accedere ad altri computer.By default, loopback sessions are created with a network security token that doesn't permit commands run in the session to access other computers. È possibile riconnettersi a sessioni di loopback che dispongono di un token di sicurezza di rete da qualsiasi sessione nel computer locale o in un computer remoto.You can reconnect to loopback sessions that have a network security token from any session on the local computer or a remote computer.

Tuttavia, se si usa il parametro EnableNetworkAccess del New-PSSession cmdlet, Enter-PSSession o Invoke-Command , la sessione di loopback viene creata con un token di sicurezza interattivo.However, if you use the EnableNetworkAccess parameter of the New-PSSession, Enter-PSSession, or Invoke-Command cmdlet, the loopback session is created with an interactive security token. Il token interattivo consente ai comandi eseguiti nella sessione di loopback di ottenere dati da altri computer.The interactive token enables commands that run in the loopback session to get data from other computers.

È possibile disconnettere le sessioni loopback con token interattivi e quindi riconnetterle dalla stessa sessione o da una sessione diversa nello stesso computer.You can disconnect loopback sessions with interactive tokens and then reconnect to them from the same session or a different session on the same computer. Tuttavia, per impedire l'accesso dannoso, è possibile riconnettersi alle sessioni di loopback con token interattivi solo dal computer in cui sono stati creati.However, to prevent malicious access, you can reconnect to loopback sessions with interactive tokens only from the computer on which they were created.

In attesa di processi nelle sessioni disconnesseWaiting for jobs in disconnected sessions

Il Wait-Job cmdlet attende il completamento di un processo e quindi torna al prompt dei comandi o al comando successivo.The Wait-Job cmdlet waits until a job completes and then returns to the command prompt or the next command. Per impostazione predefinita, Wait-Job restituisce se la sessione in cui è in esecuzione un processo è disconnessa.By default, Wait-Job returns if the session in which a job is running is disconnected. Per indicare al Wait-Job cmdlet di attendere che la sessione venga riconnessa, nello stato opened usare il parametro Force .To direct the Wait-Job cmdlet to wait until the session is reconnected, in the Opened state, use the Force parameter. Per altre informazioni, vedere Wait-Job.For more information, see Wait-Job.

Sessioni affidabili e disconnessione accidentaleRobust sessions and unintentional disconnection

Una sessione PSSession potrebbe essere disconnessa involontariamente a causa di un errore del computer o di un'interruzione della rete.A PSSession might be unintentionally disconnected because of a computer failure or network outage. PowerShell tenta di ripristinare la sessione PSSession, ma il suo esito positivo dipende dalla gravità e dalla durata della richiesta.PowerShell attempts to recover the PSSession, but its success depends upon the severity and duration of the cause.

Lo stato di una sessione PSSession disconnessa non intenzionalmente potrebbe essere interrotto o chiuso , ma potrebbe anche essere disconnesso.The state of an unintentionally disconnected PSSession might be Broken or Closed , but it might also be Disconnected. Se il valore dello stato è disconnesso , è possibile utilizzare le stesse tecniche per gestire la sessione PSSession come se la sessione fosse stata disconnessa intenzionalmente.If the value of State is Disconnected , you can use the same techniques to manage the PSSession as you would if the session were disconnected intentionally. Ad esempio, è possibile utilizzare il Connect-PSSession cmdlet per riconnettersi alla sessione e il Receive-PSSession cmdlet per ottenere i risultati dei comandi eseguiti durante la disconnessione della sessione.For example, you can use the Connect-PSSession cmdlet to reconnect to the session and the Receive-PSSession cmdlet to get results of commands that ran while the session was disconnected.

Se si chiude (chiude) la sessione in cui è stata creata una sessione PSSession mentre i comandi sono in esecuzione nella sessione PSSession, PowerShell mantiene la sessione PSSession nello stato disconnesso nel computer remoto.If you close (exit) the session in which a PSSession was created while commands are running in the PSSession, PowerShell maintains the PSSession in the Disconnected state on the remote computer. Se si chiude (chiude) la sessione in cui è stata creata una sessione PSSession, ma nessun comando è in esecuzione nella sessione PSSession, PowerShell non tenta di gestire la sessione PSSession.If you close (exit) the session in which a PSSession was created, but no commands are running in the PSSession, PowerShell doesn't attempt to maintain the PSSession.

Vedere ancheSee also

about_Jobsabout_Jobs

about_Remoteabout_Remote

about_Remote_Variablesabout_Remote_Variables

about_PSSessionsabout_PSSessions

about_Session_Configurationsabout_Session_Configurations

Connect-PSSessionConnect-PSSession

Disconnect-PSSessionDisconnect-PSSession

Get-PSSessionGet-PSSession

Receive-PSSessionReceive-PSSession

Invoke-CommandInvoke-Command