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