Error de Windows: el cliente WinRM Shell no puede procesar la solicitud
Descripción del error
This error occurs when the Windows Remote Management (WinRM) service loses track of the unique identifier (shell handle) assigned to your remote session. It signifies a communication breakdown between your local machine and the remote server.
Causas comunes
- Network Instability: Breves caídas en la conexión hacen que el servidor deje caer el manejo de la sesión.
- Session Timeouts: El servidor remoto cerró la sesión inactiva automáticamente.
- Server Resource Limits: La máquina remota alcanzó su máximo permitido de proyectiles simultáneos.
- Service Crashes: El servicio WinRM en la máquina remota se reinició inesperadamente.
Soluciones paso a paso
Corrección 1: Reinicie el servicio WinRM
Actualizar el servicio WinRM tanto en las máquinas locales como en las remotas restablece el marco de conexión.
- Abre la puerta. Start Menu.
- ¿ Qué tipo ? cmd - ¿ Qué ? PowerShell.
- Haga clic derecho en la aplicación y seleccione Run as administrator.
- ¿ Qué tipo ?
net stop winrmy presiona. Enter. - Espera a que el servicio se detenga por completo.
- ¿ Qué tipo ?
net start winrmy presiona. Enter.
Corrección 2: Aumentar el número máximo de shells por usuario
Si el servidor remoto mata su manejo porque se queda sin recursos, aumentar el límite de asignación de shell resuelve el problema.
- Abierto. PowerShell como administrador en el servidor remoto.
- Compruebe el límite actual ejecutando:
Get-Item WSMan:\localhost\Shell\MaxShellsPerUser - Aumentar el límite a 50 corriendo:
Set-Item WSMan:\localhost\Shell\MaxShellsPerUser 50 - Reinicie el servicio WinRM usando los comandos de Fix 1 para aplicar los cambios.
Solución 3: Ajustar las propiedades de tiempo de inactividad
Evite que el servidor cierre prematuramente su manija de shell durante períodos de inactividad.
- Abierto. PowerShell como administrador en el servidor remoto.
- Compruebe la configuración de tiempo de inactividad actual ejecutando:
Get-Item WSMan:\localhost\Shell\IdleTimeout - Establecer el valor del tiempo de espera en reposo en un umbral superior (valor en milisegundos, 7200000 es igual a 2 horas):
Set-Item WSMan:\localhost\Shell\IdleTimeout 7200000 - Cierra y vuelve a abrir la consola de control remoto.
Solución 4: Conectar de nuevo y restablecer la variable de sesión
Si está ejecutando scripts a través de una variable de sesión almacenada (como $Session ), la variable se corrompe cuando la manija se invalida. Debe borrarla y reconstruirla.
- Elimine la variable de sesión rota en su script o consola:
Remove-PSSession $Session - Re-crear la sesión para obtener una manija de shell completamente nueva:
$Session = New-PSSession -ComputerName "RemoteServerName" - Introduzca la nueva sesión o ejecute sus comandos de nuevo:
Enter-PSSession $Session
Puede haber algunos errores.. Learn Microsoft