about_PSSessions

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

TEMA

about_PSSessions

DESCRIPCIÓN BREVE

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

DESCRIPCIÓN LARGA

Para ejecutar comandos de Windows PowerShell en un equipo remoto, puede utilizar 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. Utilice 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 él. Una PSSession local usa la infraestructura remota de Windows PowerShell para crear y mantener la PSSession.

A partir de Windows PowerShell 3.0, las PSSessions son independientes de las sesiones en las que se crearon. Las PSSessions activas se mantienen en el equipo remoto (o el equipo en el extremo remoto o "lado servidor" de la conexión). Como resultado, puede desconectarse de la PSSession y volver a conectarse más adelante desde el mismo equipo o desde un equipo diferente.

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

Nota

Las PSSessions usan la infraestructura remota de Windows PowerShell. Para usar PSSessions, los equipos locales y remotos deben estar configurados para poder usar 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 el 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 y puede ejecutar comandos en ella. También puede agregar elementos a la sesión, como módulos y complementos, y puede crear elementos, como variables, funciones y alias. Estos elementos solo existen en la sesión y se eliminan cuando finaliza.

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 en 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 las PSSession que cree. Puede obtener, crear, configurar y eliminarlas, desconectarse y volver a conectarse a ellas y ejecutar varios comandos en la misma PSSession. La PSSession sigue estando disponible hasta que la elimine o se agote el tiempo.

Normalmente, querrá crear 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 utiliza el parámetro ComputerName de los cmdlets Invoke-Command o Enter-PSSession para ejecutar un comando remoto o para iniciar una sesión interactiva, Windows PowerShell crea una sesión temporal en el equipo remoto y la cierra en cuanto se complete el comando o en el momento en que finalice la sesión interactiva. No es posible controlar estas sesiones temporales y no se pueden utilizar durante más de un único comando o una única sesión interactiva.

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

¿POR QUÉ USAR UNA PSSESSION?

Utilice una PSSession cuando necesite una conexión persistente con un equipo remoto. Con una PSSession puede ejecutar una serie de comandos que compartan 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 necesidad de crear una PSSession. Use el parámetro ComputerName de cmdlets habilitados de forma remota para ejecutar un comando único o una serie de comandos no relacionados en uno o varios equipos.

Cuando se utiliza el parámetro ComputerName de Invoke-Command o Enter-PSSession, Windows PowerShell establece una conexión temporal en el equipo remoto y, después, cierra la conexión en cuanto se completa el comando. Los elementos de datos que cree se pierden cuando se cierra la conexión.

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

CÓMO CREAR UNA PSSESSION

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

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

        New-PSSession -ComputerName Server01

Cuando se envía el comando, New-PSSession crea la PSSession y devuelve un objeto que representa la PSSession. Puede guardar el objeto en una variable cuando se crea la PSSession, o puede utilizar un comando Get-PSSession para obtener la PSSession en un momento posterior.

Por ejemplo, el comando siguiente 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 cmdlet New-PSSession. 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-PSSession crea una PSSession en cada uno de los equipos remotos.

CÓMO OBTENER PSSESSIONS

Para obtener las PSSessions que se crearon en la sesión actual, use el cmdlet Get-PSSession sin el parámetro ComputerName. Get-PSSession devuelve el mismo tipo de objeto que devuelve New-PSSession.Insert section body here.

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

        Get-PSSession

La visualización predeterminada de la PSSession muestra su identificador y un nombre para mostrar predeterminado. Puede asignar un nombre para mostrar distinto cuando crea 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 la PSSession en una variable. El comando siguiente obtiene las PSSessions y las guarda en la variable $ps123.

        $ps123 = Get-PSSession

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

        $ps01 = Get-PSSession -Id 1

A partir de Windows PowerShell 3.0, las PSSessions se mantienen en el equipo remoto. Para obtener PSSessions que creó en equipos remotos determinados, utilice el parámetro ComputerName del cmdlet Get-PSSession. El comando siguiente obtiene las PSSessions que creó en el equipo remoto Server01. Esto incluye las PSSessions creadas en la sesión actual y en otras sesiones del equipo local u otros equipos.

        Get-PSSession -ComputerName Server01

En Windows PowerShell 2.0, Get-PSSession solo puede obtener las PSSessions que se crearon en la sesión actual. No obtiene PSSessions que se hayan creado en otras sesiones u otros equipos, incluso aunque las sesiones estén conectadas y ejecuten comandos en el equipo local.

CÓMO EJECUTAR COMANDOS EN UNA PSSESSION

Para ejecutar un comando en una o varias PSSessions, use el cmdlet Invoke-Command. Utilice el parámetro Session para especificar las PSSessions y el parámetro ScriptBlock para especificar el comando.

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

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

CÓMO ELIMINAR PSSESSIONS

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

        Remove-PSSession -Session $ps

O bien,

        Remove-PSSession -Id 1

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

       Remove-PSSession -ComputerName Server01 -Id 1

Si no se elimina la PSSession, seguirá estando disponible para su uso hasta que se agote el tiempo.

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

LOS CMDLETS DE PSSESSION

    Cmdlet                Description
    -----------------     ------------------------------------------------------
    New-PSSession         Creates a new PSSession on a local or remote computer.

    Get-PSSession         Gets the PSSessions in the current session.

    Remove-PSSession      Deletes the PSSessions in the current session.

    Enter-PSSession       Starts an interactive session.

    Exit-PSSession        Ends an interactive session.
    
    Disconnect-PSSession  Disconnects a PSSession from the current session.

    Connect-PSSession     Connects a PSSession to the current session.
     
    Receive-PSSession     Gets the results of commands that ran in a disconnected
                          session.

Para obtener una lista de cmdlets de PSSession, escriba:

       get-help *-PSSession

PARA OBTENER MÁS INFORMACIÓN

Para más información sobre las PSSession, consulte about_PSSession_Details.

VEA 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