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