¿Alguna vez has querido ejecutar comandos de PowerShell en una máquina remota desde la comodidad de tu estación de trabajo? Bueno, con la Remotización de PowerShell puedes hacerlo. Con PowerShell remoto, puedes ejecutar comandos y scripts en múltiples sistemas remotos de manera sostenible.
¿Suena interesante? Sigue leyendo para aprender cómo domar esas máquinas remotas al estilo PowerShell.
Prerrequisitos
Este tutorial será una demostración práctica. Si deseas seguirlo, asegúrate de tener al menos tres computadoras con PowerShell 7. Una será tu computadora de gestión y las otras dos serán las máquinas remotas.
Este tutorial utilizará las siguientes computadoras.
- A Windows 10 PC with PowerShell 7 installed as the management computer. You will launch remote commands from this machine.
- A Windows 10 PC with PowerShell 7 installed. This machine will be the endpoint for remote PowerShell over WinRM.
- A user account on the remote Windows machine with local administrator rights. This tutorial uses a user account called ma.
- Máquina Linux con SSHD habilitado para servir como un punto de conexión remoto de PowerShell sobre SSH. Este tutorial utiliza Fedora 35.
- Una cuenta de usuario para ejecutar comandos remotos en la máquina Linux. La cuenta debe tener permisos de sudo y acceso SSH. Este tutorial utiliza una cuenta llamada test. Cree una cuenta de usuario en este punto si no tiene una en su máquina Linux.
Habilitar PowerShell Remoto en Windows Sobre WinRM
Cuando instala PowerShell 7, hay una opción para habilitar la ejecución remota de PowerShell, y es posible que la haya habilitado en ese momento. Pero, para asegurarse, siga los siguientes pasos para habilitar PowerShell remoto.
1. Inicie sesión en el PC remoto con Windows 10.
2. Abra PowerShell como administrador.
3. Ejecute el siguiente comando para habilitar PowerShell remoto.
El comando ejecuta varios cambios de configuración, que verás en la consola.

Habilitando PowerShell remoto en Linux a través de SSH
WinRM es exclusivo de Windows, lo que significa que no puedes habilitar PowerShell remoto en Linux con él. En cambio, puedes habilitar PowerShell remoto a través de SSH en Linux. Suponiendo que ya has instalado PowerShell, sigue los siguientes pasos.
1. Inicia sesión en tu sistema Linux remoto y abre una sesión de terminal.
2. Abre el archivo de configuración del servidor SSH en un editor de texto. Utiliza el editor de texto que prefieras, como Gedit, Sublime o Nano. En este ejemplo se usa Gedit.
3. A continuación, agrega la siguiente línea al archivo. Esta línea crea un subsistema SSH que aloja un proceso de PowerShell.

4. Cierra el editor.
5. Por último, reinicia el servidor SSH ejecutando el siguiente comando.
Agregando hosts de confianza de PowerShell remoto en la máquina local
En este punto, tu ordenador remoto está listo para recibir comandos. Pero, tu ordenador de gestión puede negarse a conectarse a los hosts de PowerShell remotos si no están en la lista de hosts de confianza. Para evitar posibles problemas de conexión remota, debes agregar los hosts remotos a tus hosts de confianza.
Abre PowerShell como administrador en tu ordenador de gestión.
Ejecuta el siguiente comando winrm
. Este comando agrega tus máquinas remotas de Windows (192.168.8.107
) y Linux (192.168.8.171
) a la lista de hosts de confianza de tu ordenador.

Ejecución de Comandos en Computadoras Remotas
Con todas las piezas en su lugar, ejecutarás comandos en la máquina remota en esta sección.
1. Abre una nueva sesión de PowerShell en tu ordenador de gestión.
2. Ahora, ejecuta el siguiente comando Invoke-Command
para listar los primeros cinco servicios en la máquina remota como usuario ma
. El comando a ejecutar aparece entre las llaves del interruptor ScriptBlock
, como se muestra a continuación.

3. Para realizar lo mismo con un host Linux remoto, ejecuta el siguiente comando en su lugar. Observa que -HostName
reemplaza a -ComputerName
, y -UserName
reemplaza a -ComputerName
. Estos parámetros indican al cmdlet Invoke-Command
que el objetivo es un host SSH.

Ejecución de Scripts en Computadoras Remotas
También puedes ejecutar un archivo de script de PowerShell en un equipo remoto con el cmdlet Invoke-Command
. Pero en lugar de especificar el parámetro -ScriptBlock
, especificarás el parámetro -FilePath
seguido de la ruta local del script.
1. Primero, crea un archivo de script de PowerShell llamado nametime.ps1
en tu ordenador local.
2. Abre el script en tu editor de script preferido y añade el siguiente código. Guarda el archivo después.

3. Ejecute el cmdlet Invoke-Command
con el parámetro -FilePath
. El -FilePath
debe apuntar al archivo de script. En este ejemplo, el archivo de script está en el mismo directorio de trabajo.

Gestión de un equipo remoto de forma interactiva
En la sección anterior, viste cómo ejecutar comandos individuales en una máquina remota. En esta sección, aprenderás a abrir una sesión interactiva, de modo que puedas ejecutar múltiples comandos en la máquina remota como si estuviera local.
1. Ejecute el comando Enter-PSSession
para iniciar una sesión remota en la máquina en 192.168.8.107
como usuario ma
.
Ingrese la contraseña de la cuenta de usuario remoto, ma, en el indicador como se muestra a continuación.

Verá un nuevo indicador, como se muestra a continuación. La dirección IP dentro de los corchetes indica el host de PowerShell remoto.

3. Liste los archivos en el directorio de trabajo actual con el comando dir
, como se muestra a continuación. Puede ejecutar tantos comandos de PowerShell como desee dentro de una sesión dir
El contenido del directorio debería estar en su pantalla, como se muestra en la captura de pantalla a continuación.

4. Ejecute el cmdlet Exit-PSSession
a continuación para salir de la sesión una vez que haya terminado de gestionar la máquina remota.
Al salir, debería volver a un indicador local, como se muestra en la captura de pantalla a continuación

Desconectar y Reconectar Sesiones de PowerShell Remotas
Es posible almacenar una sesión de forma persistente como alternativa a sesiones interactivas o comandos únicos. Almacenar una sesión te permite cambiar entre sesiones sin perder contexto. En esta sección, aprenderás a crear y gestionar sesiones persistentes.
1. Ejecuta el cmdlet New-PSSession
para crear una sesión en la computadora remota, 192.168.8.107
, como usuario ma
(-Credential
). Guarda la sesión en la variable $var
, de la siguiente manera.
2. Ejecuta la variable $var
para ver su contenido de la siguiente manera
Como se muestra a continuación, deberías ver un objeto de sesión con un RemoteMachine ComputerType y un State establecido en Opened.

3. Ejecuta el comando Enter-PSSession
para ingresar a la sesión almacenada en $var
.
Si todo está bien, el indicador cambiará a un indicador remoto sin más salida, como se muestra a continuación.

4. Crea una variable, $rem1
, dentro de la sesión. Usa cualquier nombre de variable y cadena de identificación que te convenga. Usarás esta variable más adelante para determinar si te has conectado a la misma sesión.
5. Ejecuta el siguiente comando para salir de la sesión remota de PowerShell.

6. Vuelve a establecer una sesión remota de PowerShell.
7. Ejecuta la variable $rem1
en el indicador de sesión remota, como se muestra a continuación, para ver su valor.
Deberías ver el mismo valor que estableciste anteriormente antes de salir de la sesión remota de PowerShell, confirmando que te has vuelto a conectar a la misma sesión.

8. Ejecuta el comando Exit-PSSession
para salir de la sesión una vez más de la siguiente manera.
9. Finalmente, ejecuta Invoke-Command
con el interruptor session
establecido en $var
para mostrar el nombre de host de la máquina remota en la misma sesión remota. Este método es una forma alternativa de ejecutar comandos en la misma sesión sin tener que conectarse, desconectarse y reconectarse manualmente a una sola sesión.

10. Ejecuta Remove-PSSession
para eliminar por completo la sesión almacenada en $var
.
Conclusión
¡Felicidades! Al llegar al final de este tutorial, has aprendido cómo administrar un sistema Windows o Linux con PowerShell remoto. Esta guía tenía como objetivo mojarte los pies. ¿Por qué no sumergirte aún más con PowerShell en Linux sobre una sesión remota?