Compartir a través de


about_PSSessions

TEMA
    about_PSSessions

DESCRIPCIÓN BREVE
    Describe las sesiones de Windows PowerShell (PSSessions) y explica 
    cómo se establece una conexión persistente con un equipo remoto. 


DESCRIPCIÓN DETALLADA
    Para ejecutar los comandos de Windows PowerShell en un equipo 
    remoto, puede utilizar el parámetro ComputerName de un cmdlet o 
    crear una sesión de Windows PowerShell (PSSession) y ejecutar los 
    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 valores de variables, alias y funciones.

    Asimismo, puede crear una PSSession en el equipo local y ejecutar 
    comandos en dicha sesión. Una PSSession local utiliza la 
    infraestructura de comunicación remota de Windows PowerShell para 
    crear y mantener la PSSession.

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

    Nota:  las PSSessions utilizan la infraestructura de comunicación 
           remota de Windows PowerShell.
           Para poder usar PSSessions, los equipos locales y remotos 
           deben estar configurados para la comunicación remota. Para 
           obtener más información, vea about_Remote_Requirements. 
           En Windows Vista y versiones posteriores de Windows, para 
           poder 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 automáticamente una 
    sesión y puede ejecutar comandos en la sesión. También puede agregar 
    elementos a la sesión, como módulos y complementos, y crear 
    elementos, como variables, funciones y alias. Estos elementos existen 
    únicamente en la sesión y se eliminan cuando finaliza la sesión.

    Asimismo, puede crear sesiones adicionales, denominadas "sesiones 
    de Windows PowerShell" o "PSSessions", en el equipo local o un 
    equipo remoto. Al igual que en la sesión predeterminada, puede 
    ejecutar comandos en una PSSession así como agregar y crear elementos.  

    Sin embargo, a diferencia de la sesión que se inicia 
    automáticamente, puede controlar las PSSessions que crea. Puede 
    obtenerlas, crearlas, configurarlas y quitarlas, además de 
    ejecutar varios comandos en la misma PSSession. La PSSessions 
    permanece abierta y disponible hasta que la elimine de la sesión.
      
    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 que se admita la sesión. 

    Si utiliza el parámetro computerName del cmdlet Invoke-Command o Enter-
    PSSession para ejecutar un comando remoto o iniciar una sesión 
    interactiva, Windows PowerShell crea una sesión temporal en el equipo 
    remoto y la cierra cuando se completa el comando o tan pronto como 
    finalice la sesión interactiva. No se pueden controlar estas sesiones 
    temporales ni se pueden usar para más de un comando o una sesión 
    interactiva.

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


 ¿PARA QUÉ SE UTILIZA 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 comparten datos, como valores de variables, el contenido 
    de una función o la definición de un alias.

    Puede ejecutar comandos remotos sin crear una PSSession. Utilice el 
    parámetro ComputerName de cmdlets habilitados para la comunicación 
    remota a fin de ejecutar un solo comando o una serie de comandos no 
    relacionados en uno o varios equipos.

    Cuando se usa el parámetro ComputerName de Invoke-Expression o 
    Enter-PSSession, Windows PowerShell establece una conexión temporal con el 
    equipo remoto y la cierra cuando se completa el comando. Cuando se 
    cierra la conexión, se pierden los elementos de datos creados. 

    Otros cmdlets que tienen un parámetro ComputerName, como 
    Get-Eventlog y Get-WmiObject, usan otras tecnologías de 
    comunicación remota para recopilar datos. Ninguna de ellas crea 
    la conexión persistente que se crea en el caso de una PSSession.
     

 CÓMO CREAR UNA PSSESSION
    Para crear una PSSession, utilice el cmdlet New-PSSession. Para 
    crear la PSSession en un equipo remoto, use el parámetro 
    ComputerName del cmdlet New-PSSession.

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

        new-pssession -computername Servidor01

    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 al crear la PSSession o utilizar un comando Get-
    PSSession para obtener la PSSession más adelante.

    Por ejemplo, el comando siguiente crea una nueva PSSession en el 
    equipo Servidor01 y guarda el objeto resultante en la variable $ps.
    
        $ps = new-pssession -computername Servidor01


 CÓMO CREAR PSSESSIONS EN VARIOS EQUIPOS
    Para crear PSSessions en varios equipos, utilice el parámetro 
    ComputerName del cmdlet New-PSSession. Escriba los nombres de los 
    equipos remotos en una lista delimitada por comas. 

    Por ejemplo, para crear PSSessions en los equipos Servidor01, Servidor02 y 
    Servidor03, escriba:

        new-PSSession -computername Servidor01, Servidor02, Servidor03

    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, 
    utilice el cmdlet Get-PSSession. Get-PSSession devuelve el mismo 
    tipo de objeto que New-PSSession. 

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

        get-PSSession

    De forma predeterminada, se muestran el identificador y un nombre para 
    mostrar predeterminado de las PSSessions. Puede asignar un nombre para 
    mostrar alternativo al crear la sesión.

        Id   Name       ComputerName    State    ConfigurationName
        ---  ----       ------------    -----    ---------------------
        1    Session1   Servidor01      Opened   Microsoft.PowerShell
        2    Session2   Servidor02      Opened   Microsoft.PowerShell
        3    Session3   Servidor03      Opened   Microsoft.PowerShell

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

        $ps123 = get-PSSession  

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

        $ps01 = get-PSSession -id 1

    Get-PSSession obtiene únicamente las PSSessions que se crearon en 
    la sesión actual. No obtiene las PSSessions creadas en otras 
    sesiones o en otros equipos, incluso si las sesiones están 
    conectadas con el equipo local y ejecutan comandos en dicho equipo. 



 CÓMO EJECUTAR COMANDOS EN UNA PSSESSION
    Para ejecutar un comando en una o varias PSSessions, utilice el cmdlet 
    Invoke-Command. Use 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 las tres PSSessions guardadas en la variable $ps123, 
    escriba:

        invoke-command -session $ps123 -scriptblock {get-childitem}

 
 CÓMO ELIMINAR PSSESSIONS
    Cuando finalice la PSSession, utilice el cmdlet Remove-PSSession para 
    eliminarla y liberar los recursos que utilizaba.

        remove-PSSession -session $ps

        - o bien, 
          
        remove-PSSession -id 1
 
    Si no elimina la PSSession, esta permanecerá abierta y disponible 
    hasta que cierre la sesión actual o cierre Windows PowerShell.

    También puede utilizar el parámetro TimeOut de New-PSSession a fin de 
    establecer un tiempo de expiración para una PSSession inactiva. 
    Para obtener más información, vea new-PSSession.


 CMDLETS DE PSSESSION

    Cmdlet                Description


    New-PSSession         Crea una nueva PSSession en un equipo local o remoto.
    Get-PSSession         Obtiene las PSSessions en la sesión actual.
    Remove-PSSession      Elimina las PSSessions en la sesión actual.
    Enter-PSSession       Inicia una sesión interactiva.
    Exit-PSSession        Finaliza una sesión interactiva.

    Para obtener una lista de los cmdlets de PSSession, escriba:
    
    get-help *-PSSession


 MÁS INFORMACIÓN
    Para obtener más información sobre las PSSessions, vea 
    about_PSSession_details.
    

VEA TAMBIÉN
    about_Remote
    about_Remote_Requirements
    New-PSSession
    Get-PSSession
    Remove-PSSession
    Enter-PSSession
    Exit-PSSession
    Invoke-Command