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.
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.