Domina las Sesiones Remotas de PowerShell: Acceso Interactivo y Persistente

Gestionar sistemas remotos a menudo puede sentirse como navegar en un laberinto. Las sesiones interactivas pueden ser la respuesta si te quedas atascado intentando solucionar un problema en el servidor. Con el enfoque adecuado, puedes conectarte a máquinas remotas sin esfuerzo, interactuar con ellas en tiempo real e incluso mantener conexiones para trabajos a largo plazo.

En esta guía, aprenderás cómo desbloquear el potencial completo de las sesiones de PowerShell para pasar de la frustración a la maestría.

¡Optimiza tu gestión remota y haz que esas tareas tediosas sean pan comido!

Abrir una sesión interactiva

A veces, puede que necesites solucionar problemas o interactuar con un ordenador remoto en tiempo real. Por ejemplo, para diagnosticar un problema de configuración o verificar servicios. Las herramientas de gestión remota a menudo permiten conexiones, pero cambiar entre sistemas puede ser engorroso.

Las sesiones interactivas en PowerShell proporcionan una solución al permitirte conectarte sin problemas a una máquina remota y ejecutar comandos como si estuvieras trabajando en una consola local.

Antes de iniciar una sesión interactiva, asegúrate de que el sistema remoto tenga habilitado y configurado correctamente el Windows Remote Management (WinRM). Utiliza el siguiente comando para habilitar WinRM en el sistema remoto: Enable-PSRemoting -Force

Para comenzar una sesión interactiva, utiliza el comando Enter-PSSession:

Enter-PSSession -ComputerName SRV2

Observa que el indicador ahora incluye el nombre del ordenador remoto, lo que indica una conexión activa.

Confirma que la sesión se está ejecutando en la máquina remota:

hostname

Después de completar tus tareas, puedes salir de la sesión:

exit

Al usar Enter-PSSession, la sesión finaliza una vez que sales de ella.

Verifica la sesión con lo siguiente:

Get-PSSession

No se deben mostrar sesiones, ya que ya no existen.

Creación y administración de sesiones persistentes

Si bien las sesiones interactivas son útiles para tareas en tiempo real, desaparecen una vez cerradas, lo que limita la flexibilidad para el trabajo continuo. Imagina la necesidad de automatizar algunos comandos, desconectarte temporalmente y luego volver a conectarte para continuar desde donde lo dejaste.

No te preocupes. Las sesiones persistentes llenan este vacío manteniendo una conexión entre tu máquina local y la computadora remota, incluso cuando sales de la consola o reinicias.

Para combinar casos de uso no interactivos e interactivos, crea una sesión persistente:

$session = New-PSSession -ComputerName SRV2

Una vez creada, interactúa con la nueva sesión usando el parámetro Session:

Enter-PSSession -Session $session

Sal de la sesión y verifica nuevamente las sesiones abiertas:

exit
Get-PSSession

El comando New-PSSession mantiene disponible la sesión que creó.

También puedes utilizar la sesión de forma no interactiva:

Invoke-Command -Session $session -ScriptBlock {'Yay! I am in the remote computer!'}

Desconexión y reconexión de sesiones

El trabajo continuo requiere que te desconectes temporalmente de una sesión sin terminarla por completo en algún momento. Un ejemplo es cuando necesitas reiniciar tu consola local, la desconexión conserva el estado de la sesión, permitiéndote reconectar más tarde.

PowerShell te permite desconectarte de una sesión remota manteniéndola activa y reconectar más tarde.

Para desconectarte de la sesión:

Disconnect-PSSession -Session $session

La sesión ahora aparece Desconectada.

Puedes reconectar a la sesión incluso después de reiniciar la consola de PowerShell:

Connect-PSSession -ComputerName SRV2

Este proceso permite reanudar tareas en la misma sesión.

Finalmente, limpia y elimina todas las sesiones:

Get-PSSession | Remove-PSSession

💡 Consejo: Las sesiones persistentes pueden ser poderosas, pero dejarlas en ejecución puede consumir recursos del sistema en la máquina local o remota. Siempre limpia las sesiones cuando ya no las necesites para mantener un rendimiento óptimo.

Conclusión

Las sesiones interactivas y persistentes de PowerShell ofrecen herramientas poderosas para la gestión de sistemas remotos, brindando flexibilidad y eficiencia.

Ya sea que estés solucionando problemas en tiempo real, automatizando comandos o conservando el trabajo a través de reinicios, estas técnicas permiten un control sin problemas sobre los sistemas remotos.

¡Domina la gestión de sesiones y equípate con habilidades para manejar diversas tareas administrativas de manera eficiente!

Source:
https://adamtheautomator.com/powershell-interactive-sessions/