Compartir a través de


Acerca de PSSessions

Descripción breve

Describe las sesiones de Windows PowerShell (PSSessions) y explica cómo establecer una conexión persistente a un equipo remoto.

Descripción larga

Para ejecutar comandos de Windows PowerShell en un equipo remoto, puede usar el parámetro ComputerName de un cmdlet o puede crear una sesión de Windows PowerShell (PSSession) y ejecutar comandos en la PSSession.

Cuando se crea una PSSession, Windows PowerShell establece una conexión persistente con el equipo remoto. Use una PSSession para ejecutar una serie de comandos relacionados en un equipo remoto. Los comandos que se ejecutan en la misma PSSession pueden compartir datos, como los valores de variables, alias y funciones.

También puede crear una PSSession en el equipo local y ejecutar comandos en ella. Una PSSession local usa la infraestructura de comunicación remota de Windows PowerShell para crear y mantener la PSSession.

A partir de Windows PowerShell 3,0, PSSessions son independientes de las sesiones en las que se crean. Los PSSessions activos se mantienen en el equipo remoto (o el equipo en el extremo remoto o en el lado servidor de la conexión). Como resultado, puede desconectarse de la PSSession y volver a conectarse a ella más adelante desde el mismo equipo o desde otro equipo.

En este tema se explica cómo crear, usar, obtener y eliminar PSSessions. Para obtener información más avanzada, consulte about_PSSession_Details.

Nota: PSSessions usar la infraestructura de comunicación remota de Windows PowerShell. Para usar PSSessions, los equipos locales y remotos deben estar configurados para la comunicación remota. Para obtener más información, consulte about_Remote_Requirements.

En Windows Vista y versiones posteriores de Windows, para crear una PSSession en un equipo local, debe iniciar Windows PowerShell con la opción "ejecutar como administrador".

¿Qué es una sesión?

Una sesión es un entorno en el que se ejecuta Windows PowerShell.

Cada vez que inicia Windows PowerShell, se crea una sesión automáticamente y puede ejecutar comandos en la sesión. También se pueden agregar elementos a la sesión, como módulos y complementos, y se pueden crear elementos, como variables, funciones y alias. Estos elementos solo existen en la sesión y se eliminan cuando finaliza la sesión.

También puede crear sesiones administradas por el usuario, conocidas como "sesiones de Windows PowerShell" o "PSSessions", en el equipo local o en un equipo remoto. Al igual que la sesión predeterminada, puede ejecutar comandos en una PSSession y agregar y crear elementos. Sin embargo, a diferencia de la sesión que se inicia automáticamente, puede controlar el PSSessions que cree. Puede obtenerlos, crearlos, configurarlos y quitarlos, desconectar y volver a conectarse a ellos, y ejecutar varios comandos en la misma PSSession. La PSSession sigue estando disponible hasta que se elimina o se agota el tiempo de espera.

Normalmente, se crea una PSSession para ejecutar una serie de comandos relacionados en un equipo remoto. Cuando se crea una PSSession en un equipo remoto, Windows PowerShell establece una conexión persistente con el equipo remoto para admitir la sesión.

Si usa el parámetro ComputerName del Invoke-Command Enter-PSSession cmdlet o para ejecutar un comando remoto o para iniciar una sesión interactiva, Windows PowerShell crea una sesión temporal en el equipo remoto y cierra la sesión en cuanto se completa el comando o en cuanto finaliza la sesión interactiva. No puede controlar estas sesiones temporales y no puede usarlas para más de un comando único o una única sesión interactiva.

En Windows PowerShell, la "sesión actual" es la sesión en la que está trabajando. La "sesión actual" puede hacer referencia a cualquier sesión, incluida una sesión temporal o una PSSession.

¿Por qué usar una PSSession?

Use una PSSession cuando necesite una conexión persistente a un equipo remoto. Con una PSSession, puede ejecutar una serie de comandos que comparten datos, como el valor de las variables, el contenido de una función o la definición de un alias.

Puede ejecutar comandos remotos sin crear una PSSession. Use el parámetro ComputerName de cmdlets habilitados para uso remoto para ejecutar un único comando o una serie de comandos no relacionados en uno o varios equipos.

Cuando se usa el parámetro ComputerName de Invoke-Command o Enter-PSSession , Windows PowerShell establece una conexión temporal con el equipo remoto y, a continuación, cierra la conexión en cuanto se complete el comando. Los elementos de datos que cree se perderán cuando se cierre la conexión.

Otros cmdlets que tienen un parámetro ComputerName , como Get-Eventlog y Get-WmiObject , usan distintas tecnologías de comunicación remota para recopilar datos. Ninguno cree una conexión persistente como una PSSession.

Cómo crear una PSSession

Para crear una PSSession, use el New-PSSession cmdlet. Para crear la PSSession en un equipo remoto, use el parámetro ComputerName del New-PSSession cmdlet.

Por ejemplo, el siguiente comando crea una nueva PSSession en el equipo Server01.

New-PSSession -ComputerName Server01

Cuando envíe el comando, New-PSSession crea la pssession y devuelve un objeto que representa la pssession. Puede guardar el objeto en una variable al crear la PSSession, o puede usar un Get-PSSession comando para obtener la pssession en otro momento.

Por ejemplo, el siguiente comando crea una nueva PSSession en el equipo Server01 y guarda el objeto resultante en la variable $ps.

$ps = New-PSSession -ComputerName Server01

Cómo crear PSSessions en varios equipos

Para crear PSSessions en varios equipos, use el parámetro ComputerName del New-PSSession cmdlet. Escriba los nombres de los equipos remotos en una lista separada por comas.

Por ejemplo, para crear PSSessions en los equipos Server01, Server02 y Server03, escriba:

New-PSSession -ComputerName Server01, Server02, Server03

New-PSSessioncrea una PSSession en cada uno de los equipos remotos.

Cómo obtener PSSessions

Para obtener el PSSessions que se creó en la sesión actual, use el Get-PSSession cmdlet sin el parámetro ComputerName . Get-PSSessionDevuelve el mismo tipo de objeto que New-PSSession devuelve.

El siguiente comando obtiene todas las PSSessions que se crearon en la sesión actual.

Get-PSSession

La presentación predeterminada de PSSessions muestra su identificador y un nombre para mostrar predeterminado. Puede asignar un nombre para mostrar alternativo al crear la sesión.

Id   Name       ComputerName    State    ConfigurationName
---  ----       ------------    -----    ---------------------
1    Session1   Server01        Opened   Microsoft.PowerShell
2    Session2   Server02        Opened   Microsoft.PowerShell
3    Session3   Server03        Opened   Microsoft.PowerShell

También puede guardar PSSessions en una variable. El siguiente comando obtiene el PSSessions y lo guarda en la $ variable ps123.

$ps123 = Get-PSSession

Al usar los cmdlets PSSession, puede hacer referencia a una PSSession por su identificador, por su nombre o por su identificador de instancia (GUID). El siguiente comando obtiene una PSSession por su identificador y la guarda en la $ variable PS01.

$ps01 = Get-PSSession -Id 1

A partir de Windows PowerShell 3,0, se mantienen PSSessions en el equipo remoto. Para obtener PSSessions que ha creado en determinados equipos remotos, use el parámetro ComputerName del Get-PSSession cmdlet. El siguiente comando obtiene el PSSessions que ha creado en el equipo remoto Server01. Esto incluye PSSessions creados en la sesión actual y en otras sesiones en el equipo local o en otros equipos.

Get-PSSession -ComputerName Server01

En Windows PowerShell 2,0, Get-PSSession obtiene solo el PSSessions que se creó en la sesión actual. No obtiene PSSessions que se crearon en otras sesiones o en otros equipos, incluso si las sesiones están conectadas a y ejecutan comandos en el equipo local.

Cómo ejecutar comandos en una PSSession

Para ejecutar un comando en uno o varios PSSessions, use el Invoke-Command cmdlet. Use el parámetro Session para especificar el PSSessions y el parámetro ScriptBlock para especificar el comando.

Por ejemplo, para ejecutar un Get-ChildItem comando ("dir") en cada una de las tres PSSessions guardadas en la variable $ps 123, escriba:

Invoke-Command -Session $ps123 -ScriptBlock { Get-ChildItem }

Cómo eliminar PSSessions

Cuando haya terminado con la PSSession, use el Remove-PSSession cmdlet para eliminar la pssession y liberar los recursos que estaba usando.

Remove-PSSession -Session $ps

o

Remove-PSSession -Id 1

Para quitar una PSSession de un equipo remoto, use el parámetro ComputerName del Remove-PSSession cmdlet.

Remove-PSSession -ComputerName Server01 -Id 1

Si no elimina la PSSession, la PSSession sigue estando disponible para su uso hasta que se agote el tiempo de espera.

También puede usar el parámetro IdleTimeout del New-PSSessionOption cmdlet para establecer una hora de expiración para una PSSession inactiva. Para obtener más información, consulte New-PSSessionOption.

Cmdlets PSSession

Para obtener una lista de los cmdlets PSSession, escriba:

Get-Help *-PSSession
  • Connect-PSSession: conecta una PSSession a la sesión actual.
  • Disconnect-PSSession: desconecta una PSSession de la sesión actual
  • Enter-PSSession: inicia una sesión interactiva
  • Exit-PSSession: finaliza una sesión interactiva
  • Get-PSSession: obtiene el PSSessions en la sesión actual.
  • New-PSSession: crea una nueva PSSession en un equipo local o remoto.
  • Receive-PSSession: obtiene los resultados de los comandos que se ejecutaron en una sesión desconectada.
  • Remove-PSSession: elimina el PSSessions en la sesión actual.

Para obtener más información

Para obtener más información sobre PSSessions, consulte about_PSSession_Details.

Consulte también

about_Remote

about_Remote_Disconnected_Sessions

about_Remote_Requirements

Connect-PSSession

Disconnect-PSSession

Enter-PSSession

Exit-PSSession

Get-PSSession

Invoke-Command

New-PSSession

Remove-PSSession