TEMA about_PSSession_details DESCRIPCIÓN BREVE Proporciona información detallada sobre las sesiones de Windows PowerShell y el papel que desempeñan en los comandos remotos. DESCRIPCIÓN DETALLADA Una sesión es un entorno en el que se ejecuta Windows PowerShell. Se crea automáticamente una sesión cada vez que inicia Windows PowerShell. Puede crear sesiones adicionales, denominadas "sesiones de Windows PowerShell" o "PSSessions", en su equipo o en otro equipo. A diferencia de las sesiones creadas por Windows PowerShell, usted controla y administra las PSSessions que crea. Las PSSessions desempeñan un papel importante en la comunicación remota. Cuando crea una PSSession que está conectada a un equipo remoto, Windows PowerShell establece una conexión persistente al equipo remoto para admitir la PSSession. Puede utilizar la PSSession para ejecutar una serie de comandos, funciones y scripts que comparten datos. En este tema se proporciona información detallada sobre las sesiones y PSSessions de Windows PowerShell. Para obtener información básica sobre las tareas que puede realizar con las sesiones, vea about_PSSessions. ACERCA DE LAS SESIONES Desde el punto de vista técnico, una sesión es un entorno de ejecución en el que se ejecuta Windows PowerShell. Cada sesión incluye una instancia del motor de System.Management.Automation y un programa host en el que se ejecuta Windows PowerShell. El host puede ser la consola de Windows PowerShell u otro programa que ejecute comandos, como Cmd.exe, o bien, un programa generado para hospedar Windows PowerShell, como Entorno de scripting integrado (ISE) de Windows PowerShell. Desde el punto de vista de Windows, una sesión es un proceso de Windows en el equipo de destino. Cada sesión se configura de manera independiente. Incluye sus propias propiedades, su propia directiva de ejecución y sus propios perfiles. El entorno que existe cuando se crea la sesión persiste durante toda la sesión, incluso si se modifica el entorno en el equipo. Todas las sesiones se crean en un ámbito global, incluso las sesiones que se crean en un script. Puede ejecutar solo un comando (o una canalización de comandos) a la vez en una sesión. Un segundo comando ejecutado sincrónicamente (de uno en uno) espera durante un máximo de cuatro minutos hasta que se complete el primer comando. Un segundo comando ejecutado asincrónicamente (simultáneamente) genera un error. ACERCA DE LAS PSSESSIONS Se crea una sesión cada vez que inicia Windows PowerShell. Windows PowerShell crea sesiones temporales para ejecutar los comandos individuales. Sin embargo, también puede crear sesiones (denominadas "sesiones de Windows PowerShell" o "PSSessions")que usted controla y administra. Las PSSessions son muy importantes para los comandos remotos. Si utiliza el parámetro ComputerName del cmdlet Invoke-Command o Enter- PSSession, Windows PowerShell establece una sesión temporal para ejecutar el comando y, a continuación, cierra la sesión cuando se completa el comando o la sesión interactiva. Sin embargo, si utiliza el cmdlet New-PSSession para crear una PSSession, Windows PowerShell establece una sesión persistente en el equipo remoto donde puede ejecutar varios comandos o varias sesiones interactivas. Las PSSessions que crea permanecen abiertas y disponibles hasta que las elimine o cierre la sesión en la que se crearon. Cuando crea una PSSession en un equipo remoto, el sistema crea un proceso de PowerShell en el equipo remoto y establece una conexión entre el equipo local y el proceso en el equipo remoto. Cuando crea una PSSession en el equipo local, el nuevo proceso y las conexiones se crean en el equipo local. ¿CUÁNDO SE NECESITA UNA PSSESSION? Los cmdlets Invoke-Command y Enter-PSSession tienen parámetros ComputerName y Session. Puede utilizar cualquiera de ellos para ejecutar un comando remoto. Use el parámetro ComputerName para ejecutar un solo comando o una serie de comandos no relacionados en uno o varios equipos. Para ejecutar comandos que comparten datos, necesita una conexión persistente con el equipo remoto. En ese caso, cree una PSSession y, a continuación, utilice el parámetro Session para ejecutar los comandos en la PSSession. Muchos otros cmdlets que obtienen datos de equipos remotos, como Get-Process, Get-Service, Get-EventLog y Get-WmiObject, tienen solo un parámetro ComputerName. Utilizan tecnologías distintas de la comunicación remota de Windows PowerShell para recopilar datos de manera remota. Estos cmdlets no tienen un parámetro Session, pero puede usar el cmdlet Invoke-Command para ejecutar estos comandos en una PSSession. ¿CÓMO SE CREA UNA PSSESSION? Para crear una PSSession, utilice el cmdlet New-PSSession. Puede utilizar New-PSSession para crear una PSSession en un equipo local o remoto. ¿SE PUEDE CREAR UNA PSSESSION EN CUALQUIER EQUIPO? Para crear una PSSession conectada a un equipo remoto, el equipo debe estar configurado para la comunicación remota en Windows PowerShell. El usuario actual debe ser miembro del grupo Administradores en el equipo remoto o debe poder proporcionar las credenciales de un miembro del grupo Administradores. Para obtener más información, vea about_Remote_Requirements. ¿PUEDO VER LAS PSSESSIONS QUE OTROS USUARIOS HAN CREADO EN MI EQUIPO? No. Puede obtener y administrar únicamente las PSSessions que ha creado en la sesión actual. No puede ver las PSSessions que otros usuarios han creado, incluso si ejecutan comandos en el equipo local. ¿SE PUEDE EJECUTAR UN TRABAJO EN SEGUNDO PLANO EN UNA PSSESSION? Sí. Un trabajo en segundo plano es un comando que se ejecuta asincrónicamente en segundo plano sin interactuar con la sesión actual. Cuando se envía un comando para iniciar un trabajo, el comando devuelve un objeto de trabajo, pero el trabajo continúa ejecutándose en segundo plano hasta que se complete. Para iniciar un trabajo en segundo plano en un equipo local, use el comando Start-Job. Puede ejecutar el trabajo en segundo plano en una conexión temporal (mediante el parámetro ComputerName) o en una PSSession (mediante el parámetro Session). Para iniciar un trabajo en segundo plano en un equipo remoto, utilice el cmdlet Invoke-Command con el parámetro AsJob o use el cmdlet Invoke-Command para ejecutar un comando Start-Job en un equipo remoto. Si utiliza el parámetro AsJob, puede utilizar los parámetros ComputerName o Session. Si utiliza Invoke-Command para ejecutar un comando Start-Job, debe ejecutar el comando en una PSSession. Si utiliza el parámetro ComputerName, Windows PowerShell finaliza la conexión cuando se devuelve el objeto de trabajo y se interrumpe el trabajo. Para obtener más información, vea about_Jobs. ¿SE PUEDE EJECUTAR UNA SESIÓN INTERACTIVA? Sí. Para iniciar una sesión interactiva con un equipo remoto, use el cmdlet Enter-PSSession. En una sesión interactiva, los comandos que se escriben se ejecutan en el equipo remoto como si se hubieran escrito directamente en el equipo remoto. Puede ejecutar una sesión interactiva en una sesión temporal (mediante el parámetro ComputerName) o en una PSSession (mediante el parámetro Session). Si utiliza una PSSession, la PSSession conserva los datos de los comandos anteriores así como todos los datos generados durante la sesión interactiva para que se puedan usar en comandos posteriores. Cuando finaliza la sesión interactiva, la PSSession permanece abierta y disponible. Para obtener más información, vea Enter-PSSession and Exit-PSSession. ¿SE DEBEN ELIMINAR LAS PSSESSIONS? Sí. Una PSSession es un proceso que se encuentra en un entorno autónomo que utiliza memoria y otros recursos, incluso si no se está usándola. Cuando termine de usar una PSSession, elimínela. Si crea varias PSSessions, cierre las que no utilice y mantenga abiertas solo las que esté usando. Para eliminar PSSessions, utilice el cmdlet Remove-PSSession. Este cmdlet elimina las PSSessions y libera todos los recursos usados por las mismas. También puede utilizar el parámetro TimeOut de New-PSSession para cerrar una PSSession inactiva después de un intervalo especificado. Para obtener más información, vea New-PSSession. Si no elimina la PSSession o no establece un tiempo de espera, la PSSession permanece abierta y disponible hasta que la cierre, cierre la sesión en la que se creó o cierre Windows PowerShell. Sin embargo, una PSSession en un equipo remoto se desconectará si el equipo remoto no responde durante cuatro minutos. (El equipo remoto está configurado de modo que envíe una señal de actividad cada tres minutos.) Si guarda un objeto de PSSession en una variable y, a continuación, elimina la PSSession o deja que se agote el tiempo de espera, la variable conservará el objeto PSSession pero la PSSession no estará activa y no se puede utilizar ni reparar. ¿TODAS LAS SESIONES Y PSSESSIONS SON IGUALES? No. Los programadores pueden crear sesiones personalizadas que incluyen únicamente proveedores y cmdlets seleccionados. Si un comando funciona en una sesión pero no en otra, puede ser debido a que la sesión está restringida. VEA TAMBIÉN about_Jobs about_PSSessions about_Remote about_Remote_Requirements Invoke-Command New-PSSession Get-PSSession Remove-PSSession Enter-PSSession Exit-PSSession