Acerca de las sesiones desconectadas remotasAbout Remote Disconnected Sessions

Descripción breveShort description

Explica cómo desconectarse y volver a conectarse a una sesión de PowerShell (PSSession).Explains how to disconnect and reconnect to a PowerShell Session (PSSession).

Descripción largaLong description

A partir de PowerShell 3,0, puede desconectarse de una PSSession y volver a conectarse a la PSSession en el mismo equipo o en otro diferente.Beginning in PowerShell 3.0, you can disconnect from a PSSession and reconnect to the PSSession on the same computer or a different computer. El estado de la sesión se mantiene y los comandos de la PSSession continúan ejecutándose mientras la sesión está desconectada.The session state is maintained and commands in the PSSession continue to run while the session is disconnected.

La característica de sesiones desconectadas solo está disponible cuando el equipo remoto ejecuta PowerShell 3,0 o una versión posterior.The Disconnected Sessions feature is only available when the remote computer is running PowerShell 3.0 or a later version.

La característica de sesiones desconectadas le permite cerrar la sesión en la que se creó una PSSession e incluso cerrar PowerShell y apagar el equipo sin interrumpir los comandos que se ejecutan en la 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. Las sesiones desconectadas son útiles para ejecutar comandos que tardan mucho tiempo en completarse y proporcionan la flexibilidad del dispositivo y el tiempo que requieren los profesionales de ti.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.

No se puede desconectar de una sesión interactiva iniciada mediante el Enter-PSSession cmdlet.You can't disconnect from an interactive session that is started by using the Enter-PSSession cmdlet.

Puede usar sesiones desconectadas para administrar PSSessions que se desconectaron de forma involuntaria como resultado de una interrupción del equipo o de la red.You can use disconnected sessions to manage PSSessions that were disconnected unintentionally as the result of a computer or network outage.

En el uso real, la característica de sesiones desconectadas le permite empezar a resolver un problema, llamar su atención a un problema de mayor prioridad y, a continuación, reanudar el trabajo en la solución, incluso en otro equipo en otra ubicación.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.

Cmdlets de sesión desconectadaDisconnected session cmdlets

Los siguientes cmdlets admiten la característica de sesiones desconectadas:The following cmdlets support the Disconnected Sessions feature:

  • Connect-PSSession: Se conecta a una PSSession desconectada.Connect-PSSession: Connects to a disconnected PSSession.
  • Disconnect-PSSession: Desconecta una PSSession.Disconnect-PSSession: Disconnects a PSSession.
  • Get-PSSession: Obtiene PSSessions en el equipo local o en equipos remotos.Get-PSSession: Gets PSSessions on the local computer or on remote computers.
  • Receive-PSSession: Obtiene los resultados de los comandos que se ejecutaron en las sesiones desconectadas.Receive-PSSession: Gets the results of commands that ran in disconnected sessions.
  • Invoke-Command: El parámetro InDisconnectedSession crea una PSSession y se desconecta inmediatamente.Invoke-Command: InDisconnectedSession parameter creates a PSSession and disconnects immediately.

Cómo funciona la característica de sesiones desconectadasHow the Disconnected Sessions feature works

A partir de PowerShell 3,0, PSSessions son independientes de las sesiones en las que se crean.Beginning in PowerShell 3.0, PSSessions are independent of the sessions in which they're created. Los PSSessions activos se mantienen en el equipo remoto o en el servidor de la conexión, incluso si la sesión en la que se creó la PSSession está cerrada y el equipo de origen se apaga o se desconecta de la red.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.

En PowerShell 2,0, la PSSession se elimina del equipo remoto cuando se desconecta de la sesión de origen o cuando finaliza la sesión en la que se creó.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.

Cuando se desconecta una PSSession, la PSSession permanece activa y se mantiene en el equipo remoto.When you disconnect a PSSession, the PSSession remains active and is maintained on the remote computer. El estado de la sesión cambia de Running a disconnected.The session state changes from Running to Disconnected. Puede volver a conectarse a una PSSession desconectada desde la sesión actual o desde otra sesión en el mismo equipo o desde otro equipo.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. El equipo remoto que mantiene la sesión debe estar en ejecución y estar conectado a la red.The remote computer that maintains the session must be running and be connected to the network.

Los comandos de una PSSession desconectada continúan ejecutándose sin interrupciones en el equipo remoto hasta que el comando se completa o se llena el búfer de salida.Commands in a disconnected PSSession continue to run uninterrupted on the remote computer until the command completes or the output buffer fills. Para evitar que un búfer de salida completo suspenda un comando, use el parámetro OutputBufferingMode de Disconnect-PSSession los New-PSSessionOption New-PSTransportOption cmdlets, o.To prevent a full output buffer from suspending a command, use the OutputBufferingMode parameter of the Disconnect-PSSession, New-PSSessionOption, or New-PSTransportOption cmdlets.

Las sesiones desconectadas se mantienen en estado desconectado en el equipo remoto.Disconnected sessions are maintained in the disconnected state on the remote computer. Están disponibles para que se vuelva a conectar, hasta que se elimine la PSSession, como por ejemplo Remove-PSSession , mediante el cmdlet o hasta que expire el tiempo de espera de inactividad de la 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. Puede ajustar el tiempo de espera de inactividad de una PSSession mediante los parámetros IdleTimeoutSec o IdleTimeout de los Disconnect-PSSession New-PSSessionOption New-PSTransportOption cmdlets, o.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.

Otro usuario puede conectarse a PSSessions que ha creado, pero solo si puede proporcionar las credenciales que se usaron para crear la sesión, o usar las RunAs credenciales de la configuración de sesión.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.

Cómo obtener PSSessionsHow to get PSSessions

A partir de PowerShell 3,0, el Get-PSSession cmdlet obtiene PSSessions en el equipo local y en los equipos remotos.Beginning in PowerShell 3.0, the Get-PSSession cmdlet gets PSSessions on the local computer and remote computers. También puede obtener PSSessions que se crearon en la sesión actual.It can also get PSSessions that were created in the current session.

Para obtener PSSessions en el equipo local o en los equipos remotos, use los parámetros ComputerName o ConnectionUri .To get PSSessions on the local computer or remote computers, use the ComputerName or ConnectionUri parameters. Sin parámetros, Get-PSSession obtiene PSSession que se crearon en la sesión local, independientemente de dónde finalicen.Without parameters, Get-PSSession gets PSSession that were created in the local session, regardless of where they terminate.

Al obtener PSSessions, no olvide buscarlos en el equipo en el que se mantienen, es decir, en el equipo remoto o en el servidor .When getting PSSessions, remember to look for them on the computer on which they're maintained, that is, the remote or server-side computer.

Por ejemplo, si crea una PSSession en el equipo Server01, obtenga la sesión del equipo Server01.For example, if you create a PSSession to the Server01 computer, get the session from the Server01 computer. Si crea una PSSession desde otro equipo en el equipo local, obtenga la sesión desde el equipo local.If you create a PSSession from another computer to the local computer, get the session from the local computer.

La siguiente secuencia de comandos muestra cómo Get-PSSession funciona.The following command sequence shows how Get-PSSession works.

El primer comando crea una sesión en el equipo Server01.The first command creates a session to the Server01 computer. La sesión reside en el equipo 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

Para obtener la sesión, use el parámetro ComputerName de Get-PSSession con un valor de 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

Si el valor del parámetro ComputerName de Get-PSSession es localhost, Get-PSSession obtiene PSSessions que terminan en y se mantienen en el equipo local.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. No se obtiene PSSessions en el equipo Server01, aunque se hayan iniciado en el equipo local.It doesn't get PSSessions on the Server01 computer, even if they were started on the local computer.

Get-PSSession -ComputerName localhost

Para obtener las sesiones que se crearon en la sesión actual, use el Get-PSSession cmdlet sin parámetros.To get sessions that were created in the current session, use the Get-PSSession cmdlet without parameters. En este ejemplo, Get-PSSession obtiene la PSSession que se creó en la sesión actual y se conecta al equipo 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

Cómo desconectar sesionesHow to disconnect sessions

Para desconectar una PSSession, use el Disconnect-PSSession cmdlet.To disconnect a PSSession, use the Disconnect-PSSession cmdlet. Para identificar la PSSession, use el parámetro Session o la canalización una PSSession desde New-PSSession los Get-PSSession cmdlets 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.

El siguiente comando desconecta la PSSession en el equipo Server01.The following command disconnects the PSSession to the Server01 computer. Observe que el valor de la propiedad State es disconnected y la disponibilidad es 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

Para crear una sesión desconectada, use el parámetro InDisconnectedSession del Invoke-Command cmdlet.To create a disconnected session, use the InDisconnectedSession parameter of the Invoke-Command cmdlet. Crea una sesión, inicia el comando y se desconecta inmediatamente, antes de que el comando pueda devolver cualquier salida.It creates a session, starts the command, and disconnects immediately, before the command can return any output.

El siguiente comando ejecuta un Get-WinEvent comando en una sesión desconectada en el equipo 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

Cómo conectarse a sesiones desconectadasHow to connect to disconnected sessions

Puede conectarse a cualquier PSSession desconectada disponible desde la sesión en la que creó la PSSession o desde otras sesiones en el equipo local o en otros equipos.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.

Puede crear una PSSession, ejecutar comandos en la PSSession, desconectarse de la PSSession, cerrar PowerShell y apagar el equipo.You can create a PSSession, run commands in the PSSession, disconnect from the PSSession, close PowerShell, and shut down the computer. Horas más tarde, puede abrir un equipo diferente, obtener la PSSession, conectarse a ella y obtener los resultados de los comandos que se ejecutaron en la PSSession mientras estaba desconectado.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. Después, puede ejecutar más comandos en la sesión.Then you can run more commands in the session.

Para conectarse a una PSSession desconectada, use el Connect-PSSession cmdlet.To connect a disconnected PSSession, use the Connect-PSSession cmdlet. Use los parámetros ComputerName o ConnectionUri para identificar la pssession o canalizar una pssession de 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.

El siguiente comando obtiene las sesiones en el equipo Server02.The following command gets the sessions on the Server02 computer. La salida incluye dos sesiones desconectadas, las cuales están disponibles.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

El siguiente comando se conecta a Session2.The following command connects to Session2. La PSSession está ahora abierta y disponible.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

Cómo obtener los resultadosHow to get the results

Para obtener los resultados de los comandos que se ejecutaron en una PSSession desconectada, use el Receive-PSSession cmdlet.To get the results of commands that ran in a disconnected PSSession, use the Receive-PSSession cmdlet.

Puede usar Receive-PSSession en lugar de usar el Connect-PSSession cmdlet.You can use Receive-PSSession rather than using the Connect-PSSession cmdlet. Si la sesión ya está reconectada, Receive-PSSession obtiene los resultados de los comandos que se ejecutaron cuando se desconectó la sesión.If the session is already reconnected, Receive-PSSession gets the results of commands that ran when the session was disconnected. Si la PSSession todavía está desconectada, Receive-PSSession se conecta a ella y, a continuación, obtiene los resultados de los comandos que se ejecutaron mientras estaba desconectado.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 puede devolver los resultados en un trabajo (de forma asincrónica) o en el programa host (sincrónicamente).Receive-PSSession can return the results in a job (asynchronously) or to the host program (synchronously). Use el parámetro outtarget para seleccionar el trabajo o el host.Use the OutTarget parameter to select Job or Host. El valor predeterminado es host.The default value is Host. Sin embargo, si el comando que se está recibiendo se inició en la sesión actual como un trabajo , se devuelve como un trabajo de forma predeterminada.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.

El siguiente comando usa el Receive-PSSession cmdlet para conectarse a la PSSession en el equipo Server02 y obtener los resultados del Get-WinEvent comando que se ejecutó en la sesión 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. El comando usa el parámetro outtarget para obtener los resultados en un trabajo.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

Para obtener los resultados del trabajo, use el 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

Propiedades de estado y disponibilidadState and Availability properties

Las propiedades de Estado y disponibilidad de una PSSession desconectada le indican si la sesión está disponible para volver a conectarse a ella.The State and Availability properties of a disconnected PSSession tell you whether the session is available for you to reconnect to it.

Cuando una PSSession está conectada a la sesión actual, se abre su estado y está disponible su disponibilidad.When a PSSession is connected to the current session, its state is Opened and its availability is Available. Cuando se desconecta de la PSSession, el estado de PSSession es disconnected y su disponibilidad es None.When you disconnect from the PSSession, the PSSession state is Disconnected and its availability is None.

El valor de la propiedad State es relativa a la sesión actual.The value of the State property is relative to the current session. Un valor de desconectado significa que la PSSession no está conectada a la sesión actual.A value of Disconnected means that the PSSession isn't connected to the current session. Sin embargo, no significa que la PSSession esté desconectada de todas las sesiones.But, it doesn't mean that the PSSession is disconnected from all sessions. Podría estar conectada a una sesión diferente.It might be connected to a different session.

Para determinar si se puede conectar o volver a conectar a la PSSession, use la propiedad Availability .To determine whether you can connect or reconnect to the PSSession, use the Availability property. Un valor de None indica que se puede conectar a la sesión.A value of None indicates that you can connect to the session. Un valor de ocupado indica que no se puede conectar a la PSSession porque está conectada a otra sesión.A value of Busy indicates that you can't connect to the PSSession because it's connected to another session.

El ejemplo siguiente se ejecuta en dos sesiones de PowerShell en el mismo equipo.The following example is run in two PowerShell sessions on the same computer. Tenga en cuenta los valores que cambian de las propiedades de Estado y disponibilidad en cada sesión, ya que la PSSession se desconecta y se vuelve a conectar.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

Las sesiones desconectadas se mantienen en el equipo remoto hasta que se eliminan, por ejemplo, mediante el Remove-PSSession cmdlet, o se agota el tiempo de espera. La propiedad IdleTimeout de una PSSession determina cuánto tiempo se mantiene una sesión desconectada antes de que se elimine.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.

Los PSSessions están inactivos cuando el subproceso de latido no recibe ninguna respuesta.PSSessions are idle when the heartbeat thread receives no response. Al desconectar una sesión, ésta se pone inactiva e inicia el reloj IdleTimeout , incluso aunque los comandos sigan ejecutándose en la sesión desconectada.Disconnecting a session makes it idle and starts the IdleTimeout clock, even if commands are still running in the disconnected session. PowerShell considera que las sesiones desconectadas están activas, pero están inactivas.PowerShell considers disconnected sessions to be active, but idle.

Al crear y desconectar sesiones, compruebe que el tiempo de espera de inactividad de la PSSession sea lo suficientemente largo como para mantener la sesión para sus necesidades, pero no tanto tiempo que consume recursos innecesarios en el equipo 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 propiedad IdleTimeoutMs de la configuración de sesión determina el tiempo de espera de inactividad predeterminado de las sesiones que usan la configuración de sesión.The IdleTimeoutMs property of the session configuration determines the default idle timeout of sessions that use the session configuration. Puede invalidar el valor predeterminado, pero el valor que utiliza no puede superar la propiedad MaxIdleTimeoutMs de la configuración de sesión.You can override the default value, but the value that you use can't exceed the MaxIdleTimeoutMs property of the session configuration.

Para buscar el valor de los valores IdleTimeoutMs y MaxIdleTimeoutMs de una configuración de sesión, use el siguiente formato de 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

Puede invalidar el valor predeterminado en la configuración de sesión y establecer el tiempo de espera de inactividad de una PSSession al crear una PSSession y al desconectarse.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.

Si es miembro del grupo administradores en el equipo remoto, puede crear y cambiar las propiedades IdleTimeoutMs y MaxIdleTimeoutMs de las configuraciones de sesión.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.

Valores de tiempo de espera de inactividadIdle timeout values

El valor de tiempo de espera de inactividad de las configuraciones de sesión y las opciones de sesión se encuentra en milisegundos.The idle timeout value of session configurations and session options is in milliseconds. El valor de tiempo de espera de inactividad de las sesiones y las opciones de configuración de sesión es en segundos.The idle timeout value of sessions and session configuration options is in seconds.

Puede establecer el tiempo de espera de inactividad de una PSSession al crear la PSSession ( New-PSSession , Invoke-Command ) y al desconectarse de ella ( 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). Sin embargo, no puede cambiar el valor de IdleTimeout al conectarse a la PSSession ( Connect-PSSession ) o obtener los resultados ( Receive-PSSession ).However, you can't change the IdleTimeout value when you connect to the PSSession (Connect-PSSession) or get results (Receive-PSSession).

Los Connect-PSSession Receive-PSSession cmdlets y tienen un parámetro SessionOption que toma un objeto SessionOption , como uno devuelto por el 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. El valor idleTimeout en el objeto SessionOption y el valor idleTimeout de la $PSSessionOption variable de preferencia no cambian el valor del idleTimeout de la PSSession en 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.

Para crear una PSSession con un valor de tiempo de espera de inactividad determinado, cree una $PSSessionOption variable de preferencia.To create a PSSession with a particular idle timeout value, create a $PSSessionOption preference variable. Establezca el valor de la propiedad IdleTimeout en el valor deseado (en milisegundos).Set the value of the IdleTimeout property to the desired value (in milliseconds).

Al crear PSSessions, los valores de la $PSSessionOption variable tienen prioridad sobre los valores de la configuración de sesión.When you create PSSessions, the values in $PSSessionOption variable take precedence over the values in the session configuration.

Por ejemplo, el comando siguiente establece un tiempo de espera de inactividad de 48 horas:For example, the following command sets an idle timeout of 48 hours:

$PSSessionOption = New-PSSessionOption -IdleTimeoutMSec 172800000

Para crear una PSSession con un valor de tiempo de espera de inactividad determinado, use el parámetro IdleTimeoutMSec del New-PSSessionOption cmdlet.To create a PSSession with a particular idle timeout value, use the IdleTimeoutMSec parameter of the New-PSSessionOption cmdlet. A continuación, use la opción Session en el valor del parámetro SessionOption de los New-PSSession Invoke-Command cmdlets o.Then, use the session option in the value of the SessionOption parameter of the New-PSSession or Invoke-Command cmdlets.

Los valores que se establecen al crear la sesión tienen prioridad sobre los valores establecidos en la $PSSessionOption variable de preferencia y la configuración de sesión.The values set when creating the session take precedence over the values set in the $PSSessionOption preference variable and the session configuration.

Por ejemplo:For example:

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

Para cambiar el tiempo de espera de inactividad de una PSSession al desconectar, use el parámetro IdleTimeoutSec del Disconnect-PSSession cmdlet.To change the idle timeout of a PSSession when disconnecting, use the IdleTimeoutSec parameter of the Disconnect-PSSession cmdlet.

Por ejemplo:For example:

Disconnect-PSSession -IdleTimeoutSec 172800

Para crear una configuración de sesión con un tiempo de espera de inactividad determinado y un tiempo de espera máximo de inactividad, use los parámetros IdleTimeoutSec y 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. A continuación, use la opción Transport en el valor del parámetro TransportOption de Register-PSSessionConfiguration .Then, use the transport option in the value of the TransportOption parameter of Register-PSSessionConfiguration.

Por ejemplo:For example:

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

Para cambiar el tiempo de espera de inactividad predeterminado y el tiempo de espera máximo de inactividad de una configuración de sesión, use los parámetros IdleTimeoutSec y 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. A continuación, use la opción Transport en el valor del parámetro TransportOption de Set-PSSessionConfiguration .Then, use the transport option in the value of the TransportOption parameter of Set-PSSessionConfiguration.

Por ejemplo:For example:

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

Modo de almacenamiento en búfer de salidaOutput buffering mode

El modo de almacenamiento en búfer de salida de una PSSession determina cómo se administra el resultado del comando cuando el búfer de salida de la PSSession está lleno.The output buffering mode of a PSSession determines how command output is managed when the output buffer of the PSSession is full.

En una sesión desconectada, el modo de almacenamiento en búfer de salida determina de forma eficaz si el comando continúa ejecutándose mientras la sesión está desconectada.In a disconnected session, the output buffering mode effectively determines whether the command continues to run while the session is disconnected.

Los valores válidos son los siguientes:The valid values as follows:

  • Bloqueo.Block. cuando el búfer de salida está lleno, la ejecución se suspende hasta que el búfer se vacíe.When the output buffer is full, execution is suspended until the buffer is clear. Valor predeterminado.The default value.
  • Quitar.Drop. cuando el búfer de salida está lleno, la ejecución continúa.When the output buffer is full, execution continues. A medida que se genera la nueva salida, se descarta la salida más antigua.As new output is generated, the oldest output is discarded.

Block conserva los datos, pero puede interrumpir el comando.Block preserves data, but might interrupt the command. El valor Drop permite que el comando se complete, aunque se podrían perder datos.A value of Drop allows the command to complete, although data might be lost. Cuando use el valor Drop , redirija el resultado del comando a un archivo en disco.When using the Drop value, redirect the command output to a file on disk. Este valor se recomienda para las sesiones desconectadas.This value is recommended for disconnected sessions.

La propiedad OutputBufferingMode de la configuración de sesión determina el modo de almacenamiento en búfer de salida predeterminado de las sesiones que usan la configuración de sesión.The OutputBufferingMode property of the session configuration determines the default output buffering mode of sessions that use the session configuration.

Para buscar el valor de una configuración de sesión de OutputBufferingMode , puede usar cualquiera de los siguientes formatos de 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

Puede invalidar el valor predeterminado en la configuración de sesión y establecer el modo de almacenamiento en búfer de salida de una PSSession cuando se crea una PSSession, cuando se desconecta y cuando se vuelve a conectar.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.

Si es miembro del grupo administradores en el equipo remoto, puede crear y cambiar el modo de almacenamiento en búfer de salida de las configuraciones de sesión.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.

Para crear una PSSession con el modo de almacenamiento en búfer de salida Drop , cree una $PSSessionOption variable de preferencia en la que el valor de la propiedad OutputBufferingMode sea 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.

Al crear PSSessions, los valores de la $PSSessionOption variable tienen prioridad sobre los valores de la configuración de sesión.When you create PSSessions, the values in $PSSessionOption variable take precedence over the values in the session configuration.

Por ejemplo:For example:

$PSSessionOption = New-PSSessionOption -OutputBufferingMode Drop

Para crear una PSSession con el modo de almacenamiento en búfer de salida Drop , use el parámetro OutputBufferingMode del New-PSSessionOption cmdlet para crear una opción de sesión con un valor de 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. A continuación, use la opción Session en el valor del parámetro SessionOption de los New-PSSession Invoke-Command cmdlets o.Then, use the session option in the value of the SessionOption parameter of the New-PSSession or Invoke-Command cmdlets.

Los valores que se establecen al crear la sesión tienen prioridad sobre los valores establecidos en la $PSSessionOption variable de preferencia y la configuración de sesión.The values set when creating the session take precedence over the values set in the $PSSessionOption preference variable and the session configuration.

Por ejemplo:For example:

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

Para cambiar el modo de almacenamiento en búfer de salida de una PSSession al desconectar, use el parámetro 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.

Por ejemplo:For example:

Disconnect-PSSession -OutputBufferingMode Drop

Para cambiar el modo de almacenamiento en búfer de salida de una PSSession al volver a conectarla, use el parámetro OutputBufferingMode del New-PSSessionOption cmdlet para crear una opción de sesión con un valor de 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. A continuación, use la opción Session en el valor del parámetro SessionOption de Connect-PSSession o Receive-PSSession .Then, use the session option in the value of the SessionOption parameter of Connect-PSSession or Receive-PSSession.

Por ejemplo:For example:

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

Para crear una configuración de sesión con un modo de almacenamiento en búfer de salida predeterminado Drop , use el parámetro OutputBufferingMode del New-PSTransportOption cmdlet para crear un objeto de opción de transporte con un valor de 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. A continuación, use la opción Transport en el valor del parámetro TransportOption de Register-PSSessionConfiguration .Then, use the transport option in the value of the TransportOption parameter of Register-PSSessionConfiguration.

Por ejemplo:For example:

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

Para cambiar el modo de almacenamiento en búfer de salida predeterminado de una configuración de sesión, use el parámetro OutputBufferingMode del New-PSTransportOption cmdlet para crear una opción de transporte con un valor de 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. A continuación, use la opción Transport en el valor del parámetro SessionOption de Set-PSSessionConfiguration .Then, use the Transport option in the value of the SessionOption parameter of Set-PSSessionConfiguration.

Por ejemplo:For example:

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

Desconectar sesiones de bucle invertidoDisconnecting loopback sessions

Las sesiones de bucle invertido, o las sesiones locales, son PSSessions que se originan y terminan en el mismo equipo.Loopback sessions, or local sessions, are PSSessions that originate and terminate on the same computer. Al igual que otros PSSessions, las sesiones de bucle invertido activas se mantienen en el equipo en el extremo remoto de la conexión (el equipo local), por lo que puede desconectarse y volver a conectarse a las sesiones de bucle invertido.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.

De forma predeterminada, las sesiones de bucle invertido se crean con un token de seguridad de red que no permite que los comandos se ejecuten en la sesión para tener acceso a otros equipos.By default, loopback sessions are created with a network security token that doesn't permit commands run in the session to access other computers. Puede volver a conectarse a las sesiones de bucle invertido que tengan un token de seguridad de red desde cualquier sesión en el equipo local o en un equipo remoto.You can reconnect to loopback sessions that have a network security token from any session on the local computer or a remote computer.

Sin embargo, si usa el parámetro EnableNetworkAccess del New-PSSession cmdlet, Enter-PSSession o Invoke-Command , la sesión de bucle invertido se crea con un token de seguridad interactivo.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. El token interactivo habilita los comandos que se ejecutan en la sesión de bucle invertido para obtener datos de otros equipos.The interactive token enables commands that run in the loopback session to get data from other computers.

Puede desconectar las sesiones de bucle invertido con tokens interactivos y, a continuación, volver a conectarse a ellas desde la misma sesión o desde una sesión diferente en el mismo equipo.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. Sin embargo, para evitar el acceso malintencionado, puede volver a conectarse a sesiones de bucle invertido con tokens interactivos únicamente desde el equipo en el que se crearon.However, to prevent malicious access, you can reconnect to loopback sessions with interactive tokens only from the computer on which they were created.

Esperando trabajos en sesiones desconectadasWaiting for jobs in disconnected sessions

El Wait-Job cmdlet espera hasta que se completa un trabajo y, a continuación, vuelve al símbolo del sistema o al siguiente comando.The Wait-Job cmdlet waits until a job completes and then returns to the command prompt or the next command. De forma predeterminada, Wait-Job devuelve si la sesión en la que se está ejecutando un trabajo está desconectada.By default, Wait-Job returns if the session in which a job is running is disconnected. Para indicar al Wait-Job cmdlet que espere hasta que la sesión se vuelva a conectar, en el estado abierto , use el parámetro Force .To direct the Wait-Job cmdlet to wait until the session is reconnected, in the Opened state, use the Force parameter. Para obtener más información, consulte Wait-Job.For more information, see Wait-Job.

Sesiones sólidas y desconexión involuntariaRobust sessions and unintentional disconnection

Una PSSession podría desconectarse accidentalmente debido a un error del equipo o a una interrupción de la red.A PSSession might be unintentionally disconnected because of a computer failure or network outage. PowerShell intenta recuperar la PSSession, pero su éxito depende de la gravedad y la duración de la causa.PowerShell attempts to recover the PSSession, but its success depends upon the severity and duration of the cause.

El estado de una PSSession desconectada involuntariamente podría estar roto o cerrado , pero también podría estar desconectada.The state of an unintentionally disconnected PSSession might be Broken or Closed , but it might also be Disconnected. Si el valor de State está desconectado , puede utilizar las mismas técnicas para administrar la PSSession, como haría si la sesión se desconectara intencionadamente.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. Por ejemplo, puede usar el Connect-PSSession cmdlet para volver a conectarse a la sesión y el Receive-PSSession cmdlet para obtener los resultados de los comandos que se ejecutaron mientras se desconectó la sesión.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.

Si cierra (sale) la sesión en la que se creó una PSSession mientras los comandos se ejecutan en la PSSession, PowerShell mantiene la PSSession en estado desconectado en el equipo 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. Si cierra (sale) la sesión en la que se creó una PSSession, pero no se ejecuta ningún comando en la PSSession, PowerShell no intenta mantener la 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.

Consulte tambiénSee 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