Cómo usar Enter-PSSession para ejecutar comandos remotos en un shell interactivo

Cómo usar Enter-PSSession para la administración remota de PowerShell

El cmdlet Enter-PSSession es una de esas herramientas que realmente simplifican la administración remota de varias máquinas Windows. Si intentas solucionar un problema, implementar configuraciones o simplemente verificar un servidor remoto, esta suele ser la opción preferida. En algunas configuraciones, es un poco extraño; puede que no funcione de inmediato debido a problemas de red o permisos. Pero una vez que lo tienes en funcionamiento, es bastante eficiente. Ten en cuenta que, dependiendo de tu entorno, podrías necesitar ajustar algunas configuraciones o ejecutar algunos comandos para que todo funcione. Y sí, a veces Windows tiene que complicarlo un poco más de lo debido.

En la mayoría de los casos, necesitará tener habilitada la comunicación remota de PowerShell; de lo contrario, no se conectará nada. En Windows Server 2016 y versiones posteriores, PSRemoting está activado de forma predeterminada, pero en equipos de escritorio como Windows 10 u 11, es posible que deba habilitarlo manualmente. Depende de usted comprobar si su equipo está listo. Y si no tiene permiso, no podrá establecer esa sesión. Por lo tanto, los permisos son importantes.

Cómo solucionar problemas comunes con Enter-PSSession

Habilitar la comunicación remota de PowerShell en Windows 10/11 para acceso remoto

De forma predeterminada, PSRemoting está deshabilitado en las instalaciones de escritorio de Windows (Win10/11), probablemente porque Microsoft cree que la mayoría de los usuarios podrían exponerse a riesgos de seguridad. Para activarlo, abra PowerShell como administrador y ejecute:

Enable-PSRemoting -Force

Este comando hace muchas cosas: activa WinRM, lo configura para que se inicie automáticamente, ajusta el firewall y reinicia el servicio. A veces, si está en una red pública, podría necesitar agregar «-SkipNetworkProfileCheck» de la siguiente manera:

Enable-PSRemoting -SkipNetworkProfileCheck -Force

Esto es importante porque en una red Wi-Fi pública o en algunos perfiles de red más estrictos, WinRM podría permanecer deshabilitado.

Cómo comprobar si WinRM se está ejecutando y escuchando

Si la conexión remota sigue sin poder conectarse, verifique que el servicio WinRM funcione correctamente. Ejecute:

Get-Service WinRM | Select MachineName, Name, Status, StartType

¿Todo bien? El estado debería indicar «En ejecución» y el tipo de inicio debería ser «Automático». Si no es así, inícielo manualmente con:

Start-Service WinRM

A veces, el firewall bloquea el tráfico entrante de WinRM. Verifique que el puerto TCP 5985 (HTTP) o 5986 (HTTPS si SSL está habilitado) esté abierto en las reglas de su firewall. Puede agregarlo o verificarlo con la configuración existente del Firewall de Windows o mediante PowerShell, como se indica a continuación:

New-NetFirewallRule -Name "WinRM HTTP" -DisplayName "Allow WinRM over HTTP" -Protocol TCP -LocalPort 5985 -Action Allow

Permitir que su usuario esté en el grupo correcto

Por seguridad, solo ciertos grupos de usuarios pueden conectarse remotamente. Normalmente, su cuenta debe estar en Administradores o Usuarios de administración remota. En algunas configuraciones, es posible que deba agregarse explícitamente. Ejecute esto en PowerShell:

Add-LocalGroupMember -Group "Remote Management Users" -Member "YourUsername"

Reemplázalo YourUsernamecon tu nombre de usuario real. Normalmente basta con eso, a menos que las políticas de Active Directory lo impidan.

Cómo agregar un host remoto como TrustedHost

Si intentas conectarte usando una dirección IP o un CNAME (no un dominio completo), podrías encontrarte con restricciones de TrustedHosts. Para solucionarlo, ejecuta:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.1.100"

O bien, para múltiples hosts o comodines:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*.woshub.com"

Después de eso, reinicie el servicio WinRM con:

Restart-Service WinRM

Tenga en cuenta que agregar hosts a TrustedHosts puede generar riesgos de seguridad, así que hágalo con cuidado.

Prueba de conectividad local o remota

Antes de intentar conectarse de forma remota, verifique la configuración local con:

Test-WSMan -ComputerName localhost

Si devuelve la información de la versión sin errores, tu configuración de WinRM es correcta. De lo contrario, primero debes corregir el servidor. Recuerda que, si la comunicación remota no está habilitada, recibirás un mensaje indicando que no se puede conectar y verás errores como:

Test-WSMan : 

Making the Actual Connection

Once everything’s ready, connecting is straightforward:

Enter-PSSession -ComputerName your_remote_host

If you need credentials, use the -Credentials switch:

Enter-PSSession -ComputerName your_remote_host -Credentials (Get-Credential)

This will pop up a login box. On one setup it worked right away, on another I had to make sure the user was in the right group and WinRM was enabled everywhere. Weird thing is sometimes it’s flakey, especially if you’re mixing domain and workgroup machines or trying over IP without proper trust. Just keep an eye on those details.

Over SSH — Modern Twist for PowerShell Remoting

Up to PowerShell 7+, you can also connect over SSH if you have the built-in OpenSSH server enabled on the remote Windows machine (fingers crossed it’s set up).Use:

Enter-PSSession -HostName user@hostname

Or with an SSH key:

Enter-PSSession -HostName user@hostname -KeyFilePath C:\PS\max_rsa_key

This is kind of a newer, more secure way, especially if WinRM isn’t an option.

Remember, if connecting over IP, you'll likely need to add the host to the TrustedHosts list, because of how default WinRM settings work. Otherwise, authentication gets weird.

In general, using Enter-PSSession and related commands like New-PSSession are perfect for interactive sessions — but for scripting or running on multiple machines at once, you’d probably jump into Invoke-Command.

And of course, Windows has to keep us on our toes with all these hoops. If something isn’t working, it’s usually worth double-checking the firewalls, permissions, and whether everything is enabled properly. Because of course, Windows has to make it just a little more complicated than it needs to be.