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