Error de Windows: el cliente WinRM Shell no puede procesar la solicitud
Descripción del error
Este error suele ocurrir durante las tareas de gestión remota utilizando Windows Remote Management (WinRM) - ¿ Qué ? PowerShell Remoting. Indica que la sesión de conexión (shell handle) entre su computadora local y el servidor remoto se ha roto, desincronizado o dañado en medio de la operación.
Las causas más comunes incluyen:
- Network Instability: Breves caídas de red rompen el manillar de sesión activa de WSMan.
- Session Timeouts: El servidor remoto cerró la conexión inactiva, haciendo que el manejo local no sea válido.
- Resource Limits: El servidor remoto alcanzó su máximo permitido de shells activos por usuario.
- Service Restarts: el
WinRMEl servicio en la máquina objetivo se reinició mientras su script estaba ejecutándose.
Soluciones paso a paso
Siga estas soluciones para resolver el problema.
Corrección 1: Reinicie el servicio WinRM
Actualizar el servicio WinRM tanto en la máquina local como en la máquina remota generalmente borra las manijas no válidas.
- Abre la puerta. Start Menu, buscan cmd, haga clic derecho en él, y seleccione Run as administrator.
- Escriba el siguiente comando para detener el servicio y presione Enter:
net stop winrm - Escriba el siguiente comando para reiniciar el servicio y presione Enter:
net start winrm
Corrección 2: Aumentar el número máximo de shells por usuario
Si está ejecutando scripts complejos, es posible que esté alcanzando el límite predeterminado para shells remotos concurrentes. Puede aumentar este valor en el servidor remoto.
- Abierto. PowerShell as an Administrator en la máquina de destino.
- Ejecute este comando para comprobar sus límites actuales:
Get-Item WSMan:\localhost\Shell\MaxShellsPerUser - Aumentar el límite (por ejemplo, fijarlo en 50) ejecutando:
Set-Item WSMan:\localhost\Shell\MaxShellsPerUser 50
Solución 3: restablecer la sesión de PowerShell
Si este error aparece dentro de un script de PowerShell en ejecución prolongada, el objeto de sesión existente está muerto. Debe cerrar explícitamente la sesión rota y crear una nueva.
- Busque su variable de sesión en su script (por lo general llamado algo así como
$session) y de la Comisión). - Añadir código para eliminar la sesión rota de forma segura:
Remove-PSSession $session -ErrorAction SilentlyContinue - Crear una nueva sesión antes de ejecutar el siguiente comando:
$session = New-PSSession -ComputerName "RemoteComputerName" Invoke-Command -Session $session -ScriptBlock { YourCommand }
Corrección 4: Ajustar las configuraciones de MaxMemoryPerShellMB
La baja asignación de memoria en la máquina remota puede bloquear el proceso de trabajador anfitrión del shell WSMan, lo que resulta en un manejo no válido.
- Abierto. PowerShell as an Administrator en la máquina remota.
- Compruebe el límite de memoria actual por shell:
Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB - Aumente el límite de memoria a 2048 MB (2 GB) para asegurarse de que los scripts no se queden sin memoria:
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048 - Reinicie el servicio WinRM para aplicar los cambios:
Restart-Service winrm
Puede haber algunos errores.. Learn Microsoft