about_Remote_Disconnected_Sessions

Se aplica a: Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

TEMA

about_Remote_Disconnected_Session

DESCRIPCIÓN BREVE

Explica cómo desconectarse y volver a conectarse a una PSSession

DESCRIPCIÓN LARGA

A partir de Windows PowerShell® 3.0, puede desconectarse de una PSSession y volver a conectarse a ella más tarde en el mismo equipo o en un equipo diferente. Se mantiene el estado de la sesión y los comandos de la PSSession seguirán ejecutándose mientras la sesión está desconectada.

La característica Sesiones desconectadas solo está disponible cuando el equipo se ejecuta en el extremo remoto de una conexión que ejecuta Windows PowerShell 3.0 o una versión posterior de Windows PowerShell.

La característica Sesiones desconectadas permite cerrar la sesión en la que se creó una PSSession, e incluso cerrar Windows PowerShell, y apagar el equipo, sin interrumpir los comandos que se ejecutan en la PSSession. Es especialmente útil para ejecutar comandos que tardan mucho tiempo en completarse, y ofrece la flexibilidad de tiempo y dispositivos que requieren los profesionales de TI.

NOTA: No es posible desconectarse de una sesión interactiva que se inicie mediante el cmdlet Enter-PSSession.

Puede usar Sesiones desconectadas para administrar PSSessions que se desconectaron involuntariamente como consecuencia de una interrupción de la red o el equipo.

En el mundo real, la característica Sesiones desconectadas le permite empezar a solucionar un problema, centrarse otro un problema de mayor prioridad y, más tarde, reanudar el trabajo en la solución, incluso en un equipo distinto y una ubicación diferente.

CMDLETS DE SESIONES DESCONECTADAS

Los cmdlets siguientes admiten la característica Sesiones desconectadas:

  • Disconnect-PSSession:

    desconecta una PSSession.

  • Connect-PSSession:

    se conecta a una PSSession desconectada.

  • Receive-PSSession:

    obtiene los resultados de los comandos que se ejecutaron en las sesiones desconectadas.

  • Get-PSSession:

    obtiene PSSessions en el equipo local o en equipos remotos.

  • Invoke-Command:

    El parámetro InDisconnectedSession crea una PSSession y se desconecta inmediatamente.

CÓMO FUNCIONA LA CARACTERÍSTICA DE SESIONES DESCONECTADAS

A partir de Windows PowerShell 3.0, las PSSessions son independientes de las sesiones en las que se crearon. La PSSession activa se mantiene en el equipo remoto o "lado servidor" de la conexión, incluso aunque se cierre la sesión en la que se creó la PSSession y el equipo de origen esté apagado o desconectado de la red.

En Windows PowerShell 2.0, la PSSession se elimina del equipo remoto cuando se desconecta de la sesión original o finaliza la sesión en que se creó.

Cuando se desconecta una PSSession, la PSSession permanece activa y se mantiene en el equipo remoto. El estado de la sesión cambia de Running a Disconnected. Puede volver a conectarse a una PSSession desconectada desde la sesión actual o desde una sesión diferente en el mismo equipo o desde un equipo diferente. El equipo remoto que mantiene la sesión debe estar en ejecución y conectado a la red.

Los comandos en una PSSession desconectada seguirán ejecutándose sin interrupciones en el equipo remoto hasta que finalice la ejecución del comando o se llene el búfer de salida. Para evitar que un búfer de salida lleno suspenda un comando, utilice el parámetro OutputBufferingMode de los cmdlets Disconnect-PSSession, New-PSSessionOption o New-PSTransportOption.

Las sesiones desconectadas se mantienen en el estado desconectado en el equipo remoto. Estarán disponibles para que pueda volver a conectarse hasta que elimine la PSSession, por ejemplo mediante el cmdlet Remove-PSSession, o hasta que expire el tiempo de espera de inactividad de la PSSession. Puede ajustar el tiempo de espera de inactividad de una PSSession mediante los parámetros IdleTimeoutSec o IdleTimeout de los cmdlets Disconnect-PSSession, New-PSSessionOption o New-PSTransportOption.

Otro usuario puede conectarse a las PSSessions que haya creado, pero solo si pueden facilitar las credenciales que se usaron para crear la sesión o usen las credenciales RunAs de la configuración de la sesión.

CÓMO OBTENER PSSESSIONS

A partir de Windows PowerShell 3.0, el cmdlet Get-PSSession obtiene PSSession en el equipo local y en equipos remotos. También puede obtener PSSessions que se crearan en la sesión actual.

Para obtener PSSession en el equipo local o en equipos remotos, utilice los parámetros ComputerName o ConnectionUri. Sin parámetros, Get-PSSession obtiene PSSessions que se crearon en la sesión local, independientemente de dónde terminen.

Al obtener PSSessions, no olvide buscarlas en el equipo en el que se mantienen; es decir, el equipo remoto o de "lado servidor".

Por ejemplo, si crea una PSSession en el equipo Server01, inicie la sesión desde el equipo Server01. Si crea una PSSession en el equipo local desde otro equipo, obtenga la sesión desde el equipo local.

El script siguiente muestra el funcionamiento de Get-PSSession.

El primer comando crea una sesión en el equipo Server01. La sesión se encuentra en el equipo Server01.

      PS C:\ps-test> New-PSSession -ComputerName Server01

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

Para obtener la sesión, utilice el parámetro ComputerName de Get-PSSession con un valor de Server01.

      PS C:\ps-test> 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 terminen y se mantengan en el equipo local. No obtiene PSSession en el equipo Server01, incluso aunque se hayan iniciado en el equipo local.

      PS C:\ps-test> Get-PSSession -ComputerName localhost
      PS C:\ps-test>

Para obtener sesiones que se crearon en la sesión actual, use el cmdlet Get-PSSession sin parámetros. Este comando obtiene la PSSession que se creó en la sesión actual y se conecta al equipo Server01.

PS C:\ps-test> Get-PSSession

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

CÓMO DESCONECTAR SESIONES

Para desconectar una PSSession, use el cmdlet Disconnect-PSSession. Para identificar la PSSession, utilice el parámetro Session o canalice una PSSession desde los cmdlets New-PSSession o Get-PSSession a Disconnect-PSSession.

El siguiente comando desconecta la PSSession en el equipo Server01. Observe que el valor de la propiedad State es Disconnected y el de Availability es None.

     PS C:\> 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, utilice el parámetro InDisconnectedSession del cmdlet Invoke-Command. Crea una sesión, inicia el comando y se desconecta inmediatamente, antes de que el comando pueda devolver ningún resultado.

El comando siguiente ejecuta un comando Get-WinEvent en una sesión desconectada en el equipo remoto Server02.

     PS C:\> Invoke-Command -ComputerName Server02 -InDisconnectedSession `
             -ScriptBlock {Get-WinEvent -LogName "Windows PowerShell"} 

     Id Name            ComputerName    State         ConfigurationName     Availability
     -- ----            ------------    -----         -----------------     ------------
      4 Session3        Server02        Disconnected  Microsoft.PowerShell          None

CÓMO CONECTARSE A SESIONES DESCONECTADAS

Puede conectarse a cualquier PSSession desconectada disponible desde la sesión en que se creó la PSSession o desde otras sesiones en el equipo local o en otros equipos.

Puede crear una PSSession, ejecutar comandos en ella, desconectarse de ella, cerrar Windows PowerShell y apagar el equipo. 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 desconectada. Después, puede ejecutar más comandos en la sesión.

Para conectar una PSSession desconectada, use el cmdlet Connect-PSSession. Use los parámetros ComputerName o ConnectionUri para identificar la PSSession o canalizar una PSSession desde Get-PSSession a Connect-PSSession.

El comando siguiente obtiene las sesiones en el equipo Server02. La salida incluye dos sesiones desconectadas, las cuales están disponibles.

     PS C:\> 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. La PSSession ya está abierta y disponible.

     PS C:> Connect-PSSession -ComputerName Server02 -Name Session2


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

CÓMO OBTENER LOS RESULTADOS

Para obtener los resultados de los comandos que se ejecutaron en una PSSession desconectada, use el cmdlet Receive-PSSession.

Puede utilizar Receive-PSSession junto con o en lugar del cmdlet Connect-PSSession. Si la sesión ya se ha vuelto a conectar, Receive-PSSession obtiene los resultados de los comandos que se ejecutaron cuando la sesión se desconectó. Si la PSSession aún está desconectada, Receive-PSSession se conecta a ella y, después, obtiene los resultados de los comandos que se ejecutaron mientras estaba desconectada.

Receive-PSSession puede devolver los resultados en un trabajo (asincrónicamente) o en el programa host (sincrónicamente). Utilice el parámetro OutTarget para seleccionar el Job (trabajo) o Host. Host es el valor predeterminado. Sin embargo, si el comando que se recibe se inició en la sesión actual como un trabajo, se devuelve como un trabajo de forma predeterminada.

El siguiente comando usa el cmdlet Receive-PSSession para conectarse a la PSSession en el equipo Server02 y obtener los resultados del comando Get-WinEvent que se ejecutó en la sesión Session3. El comando utiliza el parámetro OutTarget para obtener los resultados en un trabajo.

      PS C:\> 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 cmdlet Receive-Job.

      PS C:\ps-test> 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                                                        

STATE Y AVAILABILITY

Las propiedades State y Availability de una PSSession desconectada le indican si la sesión está disponible para volver a conectarse a ella.

Si una PSSession está conectada a la sesión actual, su estado (State) es Opened y su disponibilidad (Availability) es Available. Si se desconecta de la PSSession, su valor de State será Disconnected y el de Availability será None.

No obstante, el valor de la propiedad State es relativa a la sesión actual. Por lo tanto, un valor Disconnected significa que la PSSession no está conectada a la sesión actual. Sin embargo, eso no significa que la PSSession esté desconectada de todas las sesiones. Podría estar conectada a una sesión diferente.

Para determinar si se puede conectar o volver a conectar a la sesión, utilice la propiedad Availability. Un valor de Availability de None indica que se puede conectar a la sesión. Un valor Busy indica que no se puede conectar a la PSSession porque ya está conectada a otra sesión.

El siguiente ejemplo se ejecuta en dos sesiones (ventanas de consola de Windows PowerShell) en el mismo equipo. Tenga en cuenta los valores cambiantes de las propiedades State y Availability en cada sesión, a medida que la PSSession se desconecta y se vuelve a conectar.

         #Session 1:
         PS C:\> New-PSSession -ComputerName Server30 -Name Test

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
         1  Test       Server30        Opened        Microsoft.PowerShell     Available

         #Session 2: 
         PS C:\> Get-PSSession -ComputerName Server30 -Name Test

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
         1 Test        Server30        Disconnected  Microsoft.PowerShell          Busy



         #Session 1
         PS C:\> Get-PSSession -ComputerName Server30 -Name Test | Disconnect-PSSession

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
          1 Test       Server30        Disconnected  Microsoft.PowerShell          None

         #Session 2
         PS C:\> Get-PSSession -ComputerName Server30 

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
          1 Test       Server30        Disconnected  Microsoft.PowerShell          None



         #Session 2
         PS C:\> Connect-PSSession -ComputerName Server01 -Name Test

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
         3 Test        Server30        Opened        Microsoft.PowerShell     Available

         #Session 1
         PS C:\> Get-PSSession -ComputerName Server30 

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
          1 Test       Server30        Disconnected  Microsoft.PowerShell          Busy

TIEMPO DE ESPERA DE INACTIVIDAD

Las sesiones desconectadas se mantienen en el equipo remoto hasta que las elimine, por ejemplo, mediante el cmdlet Remove-PSSession o cuando se agote el tiempo de espera. La propiedad IdleTimeout de una PSSession determina cuánto tiempo se mantiene una sesión desconectada antes de eliminarse.

Las PSSessions están inactivas cuando el "subproceso de latido" no recibe respuestas. Cuando una sesión se desconecta, se vuelve inactiva y se inicia el reloj de tiempo de espera de inactividad, incluso aunque los comandos sigan ejecutándose en la sesión desconectada. Windows PowerShell considera que las sesiones desconectadas están en funcionamiento, pero están inactivas.

Al crear y desconectar sesiones, compruebe que el tiempo de espera de inactividad de la PSSession es suficientemente extenso para que la sesión se mantenga para sus necesidades, pero no tan extenso que consuma recursos innecesarios en el equipo remoto.

La propiedad IdleTimeoutMs de la configuración de la sesión determina el tiempo de espera de inactividad predeterminado de las sesiones que usan la configuración de sesión. Puede reemplazar el valor predeterminado, pero el valor que se utilice no puede superar la propiedad MaxIdleTimeoutMs de la configuración de sesión.

Para buscar el valor de los valores IdleTimeoutMs y MaxIdleTimeoutMs de una configuración de sesión, utilice el siguiente formato de comando.

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

Puede reemplazar el valor predeterminado en la configuración de sesión y establecer el tiempo de espera de inactividad de una PSSession cuando se crea una PSSession y cuando se desconecta.

Si es miembro del grupo Administradores en el equipo remoto, también puede crear y cambiar las propiedades IdleTimeoutMs y MaxIdleTimeoutMs de las configuraciones de sesión.

NOTAS:

El valor de tiempo de espera de inactividad de las configuraciones de sesión y las opciones de la sesión está en milisegundos. El valor del tiempo de espera de inactividad de las sesiones y las opciones de configuración de sesión está en segundos.

Puede establecer el tiempo de espera de inactividad de una PSSession al crear la PSSession (New-PSSession, Invoke-Command) y cuando se desconecta de ella (Disconnect-PSSession). Sin embargo, no puede cambiar el valor IdleTimeout cuando se conecta a la PSSession (Connect-PSSession) u obtiene resultados (Receive-PSSession).

Los cmdlets Connect-PSSession y Receive-PSSession tienen un parámetro SessionOption que toma un objeto SessionOption, como el que devuelve el cmdlet New-PSSessionOption. Sin embargo, el valor de IdleTimeout en el objeto SessionOption y el valor de IdleTimeout de la variable de preferencia $PSSessionOption no cambian el valor de IdleTimeout de la PSSession de un comando Connect-PSSession o Receive-PSSession.

-- Para crear una PSSession con un valor determinado de tiempo de espera de inactividad, cree una variable de preferencia $PSSessionOption. Establezca el valor de la propiedad IdleTimeout en el valor deseado (en milisegundos).

Cuando se crean PSSessions, los valores de la variable $PSSessionOption tienen prioridad sobre los valores de la configuración de sesión.

Por ejemplo, este comando establece un tiempo de inactividad de 48 horas.Insert section body here.

PS C:\> $PSSessionOption = New-PSSessionOption -IdleTimeoutMSec 172800000

-- Para crear una PSSession con un valor determinado de tiempo de espera de inactividad, utilice el parámetro IdleTimeoutMSec del cmdlet New-PSSessionOption. Después, utilice la opción session en el valor del parámetro SessionOption de los cmdlets New-PSSession o Invoke-Command.

Los valores establecidos al crear la sesión tienen prioridad sobre los valores establecidos en la variable de preferencia $PSSessionOption y la configuración de sesión.

Por ejemplo:

         PS C:\> $o = New-PSSessionOption -IdleTimeoutMSec 172800000 
         PS C:\> New-PSSession -SessionOption $o

-- Para cambiar un tiempo de espera de inactividad de una PSSession al desconectarse, utilice el parámetro IdleTimeoutSec del cmdlet Disconnect-PSSession.

Por ejemplo:

         PS C:\> Disconnect-PSSession -IdleTimeoutSec 172800

-- Para crear una configuración de sesión con un tiempo de espera de inactividad y un tiempo de espera de inactividad máximo determinados, use los parámetros IdleTimeoutSec y MaxIdleTimeoutSec del cmdlet New-PSTransportOption. Después, utilice la opción transport en el valor del parámetro TransportOption de Register-PSSessionConfiguration.

Por ejemplo:

         PS C:\> $o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200 
         PS C:\> Register-PSSessionConfiguration -Name Test -TransportOption $o

-- Para cambiar el tiempo de espera de inactividad y el tiempo de inactividad máximo predeterminados de una configuración de sesión, use los parámetros IdleTimeoutSec y MaxIdleTimeoutSec del cmdlet New-PSTransportOption. Después, utilice la opción transport en el valor del parámetro TransportOption de Set-PSSessionConfiguration.

Por ejemplo:

         PS C:\> $o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200
         PS C:\> Set-PSSessionConfiguration -Name Test -TransportOption $o

MODO DE ALMACENAMIENTO EN BÚFER DE SALIDA

El modo de almacenamiento en búfer de salida de una PSSession determina cómo se administra la salida de comandos cuando el búfer de salida de la PSSession está lleno.

En una sesión desconectada, el modo de almacenamiento en búfer de salida determina si el comando sigue ejecutándose mientras la sesión está desconectada.

Valores válidos:

    -- Block: When the output buffer is full, execution is suspended
              until the buffer is clear.

    -- Drop:  When the output buffer is full, execution continues. 
              As new output is generated, the oldest output is
              discarded.

Block, el valor predeterminado, conserva los datos, pero podría interrumpir el comando

El valor Drop permite que el comando se complete, aunque se podrían perder datos. Cuando use el valor Drop, redirija el resultado del comando a un archivo en disco. Este valor se recomienda para las sesiones desconectadas.

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.

Para buscar el valor de OutputBufferingMode de una configuración de sesión, utilice los siguientes formatos de comando.

      (Get-PSSessionConfiguration <ConfigurationName>).OutputBufferingMode

    -or-

      Get-PSSessionConfiguration | Format-Table Name, OutputBufferingMode

Puede reemplazar el valor predeterminado en la configuración de sesión y establecer el modo de almacenamiento en búfer de salida de una PSSession al crear una PSSession, al desconectarse y cuando se vuelve a conectar.

Si es miembro del grupo Administradores en el equipo remoto, también puede crear y cambiar el modo de almacenamiento en búfer de salida de las configuraciones de sesión.

-- Para crear una PSSession con un modo de almacenamiento en búfer de salida de tipo Drop, cree una variable de preferencia $PSSessionOption en la que el valor de la propiedad OutputBufferingMode sea Drop.

Cuando se crean PSSessions, los valores de la variable $PSSessionOption tienen prioridad sobre los valores de la configuración de sesión.

Por ejemplo:

         PS C:\> $PSSessionOption = New-PSSessionOption -OutputBufferingMode Drop

-- Para crear una PSSession con un modo de almacenamiento en búfer de salida de tipo Drop, utilice el parámetro OutputBufferingMode del cmdlet New-PSSessionOption para crear una opción de sesión con un valor de Drop. Después, utilice la opción session en el valor del parámetro SessionOption de los cmdlets New-PSSession o Invoke-Command.

Los valores establecidos al crear la sesión tienen prioridad sobre los valores establecidos en la variable de preferencia $PSSessionOption y la configuración de sesión.

Por ejemplo:

         PS C:\> $o = New-PSSessionOption -OutputBufferingMode Drop
         PS C:\> New-PSSession -SessionOption $o

-- Para cambiar el modo de almacenamiento en búfer de salida de una PSSession al desconectarse, utilice el parámetro OutputBufferingMode del cmdlet Disconnect-PSSession.

Por ejemplo:

         PS C:\> Disconnect-PSSession -OutputBufferingMode Drop

-- Para cambiar el modo de almacenamiento en búfer de salida de una PSSession al volver a conectarse, utilice el parámetro OutputBufferingMode del cmdlet New-PSSessionOption para crear una opción de sesión con un valor de Drop. Después, utilice la opción session en el valor del parámetro SessionOption de Connect-PSSession o Receive-PSSession.

Por ejemplo:

         PS C:\> $o = New-PSSessionOption -OutputBufferingMode Drop
         PS C:\> Connect-PSSession -Cn Server01 -Name Test -SessionOption $o

-- Para crear una configuración de sesión con un modo de almacenamiento en búfer de salida predeterminado de Drop, utilice el parámetro OutputBufferingMode del cmdlet New-PSTransportOption para crear un objeto de opción de transporte con un valor de Drop. Después, utilice la opción transport en el valor del parámetro TransportOption de Register-PSSessionConfiguration.

Por ejemplo:

PS C:\> $o = New-PSTransportOption -OutputBufferingMode Drop PS C:\> 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, utilice el parámetro OutputBufferingMode del cmdlet New-PSTransportOption para crear una opción de transporte con un valor de Drop. Después, utilice la opción Transport en el valor del parámetro SessionOption de Set-PSSessionConfiguration.

Por ejemplo:

         PS C:\> $o = New-PSTransportOption -OutputBufferingMode Drop
         PS C:\> Set-PSSessionConfiguration -Name Test -TransportOption $o

DESCONEXIÓN DE SESIONES DE BUCLE INVERTIDO

"Sesiones de bucle invertido" o "sesiones local" son PSSessions que se originan y finalizan en el mismo equipo. Como sucede con otras PSSessions, las sesiones de bucle invertido activas se mantienen en el equipo, en el extremo remoto de la conexión (el equipo local), de forma que puede desconectarse y volver a conectarse a sesiones de bucle invertido.

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. Puede volver a conectarse a sesiones de bucle invertido que tengan un token de seguridad de red desde cualquier sesión en el equipo local o un equipo remoto.

Sin embargo, si utiliza el parámetro EnableNetworkAccess de los cmdlets New-PSSession, Enter-PSSession o Invoke-Command, la sesión de bucle invertido se crea con un token de seguridad interactivo. El token interactivo habilita que los comandos que se ejecutan en la sesión de bucle invertido obtengan datos de otros equipos.

Puede desconectar las sesiones de bucle invertido con tokens interactivos y, después, volver a conectarse a ellas desde la misma sesión o una diferente en el mismo equipo. Sin embargo, para evitar el acceso malintencionado, solo puede conectarse a sesiones de bucle invertido con tokens interactivos desde el equipo en el que se crearon.

ESPERA DE TRABAJOS EN SESIONES DESCONECTADAS

El cmdlet Wait-Job espera hasta que se completa un trabajo y, después, vuelve a la línea de comandos o al comando siguiente. De forma predeterminada, Wait-Job devuelve si la sesión en que se ejecuta un trabajo está desconectada. Para indicar al cmdlet Wait-Job que espere hasta que se vuelva a conectar la sesión (en el estado Opened), use el parámetro Force. Para más información, vea Wait-Job.

SESIONES ROBUSTAS Y DESCONEXIÓN INVOLUNTARIA

En ocasiones, una PSSession se puede desconectar involuntariamente debido a una interrupción de la red o un error del equipo. Windows PowerShell intenta recuperar la PSSession, pero que lo consiga o no depende de la gravedad y la duración de la causa.

El estado de una PSSession desconectada involuntariamente podría ser Broken o Closed, pero también puede ser Disconnected. Si el valor de State es Disconnected, puede utilizar las mismas técnicas para administrar la PSSession que las que usaría si la sesión se hubiera desconectado de forma intencional. Por ejemplo, puede usar el cmdlet Connect-PSSession para volver a conectarse a la sesión y el cmdlet Receive-PSSession para obtener los resultados de los comandos que se ejecutaron mientras se desconectó la sesión.

Si cierra (con exit) la sesión en la que se creó una PSSession mientras se ejecutan comandos en la PSSession, Windows PowerShell mantiene la PSSession en el estado Disconnected en el equipo remoto. Si cierra (con exit) la sesión en la que se creó una PSSession, pero no hay comandos que se ejecuten en la PSSession, Windows PowerShell no intenta mantener la PSSession.

PALABRAS CLAVE

about_Disconnected_Sessions

VEA TAMBIÉN

about_Jobs

about_Remote

about_Remote_Variables

about_PSSessions

about_Session_Configurations

Disconnect-PSSession

Connect-PSSession

Get-PSSession

Receive-PSSession

Invoke-Command