Erreur Windows: le client WinRM Shell ne peut pas traiter la requête
Description de l'erreur
Cette erreur se produit généralement lors de tâches de gestion à distance en utilisant Windows Remote Management (WinRM) ou... PowerShell Remoting. Il indique que la session de connexion (shell handle) entre votre ordinateur local et le serveur distant est devenue cassée, désynchronisée ou corrompue au milieu de l'opération.
Les causes les plus courantes sont:
- Network Instability: Une brève chute de réseau casse la session active du WSMan.
- Session Timeouts: Le serveur distant a fermé la connexion inactive, rendant l'adresse locale invalide.
- Resource Limits: Le serveur distant a atteint son maximum de shells actifs autorisés par utilisateur.
- Service Restarts: le
WinRMLe service sur la machine cible a redémarré pendant que votre script était en cours d'exécution.
Réparations étape par étape
Suivez ces conseils pour résoudre le problème.
Correction 1: redémarrer le service WinRM
La mise à jour du service WinRM sur la machine locale et la machine distante efface généralement les poignées invalides.
- Ouvrez la porte. Start Menu, à la recherche de cmd, cliquez avec le bouton droit et sélectionnez Run as administrator.
- Tapez la commande suivante pour arrêter le service et appuyez Enter:
net stop winrm - Tapez la commande suivante pour redémarrer le service et appuyez Enter:
net start winrm
Correction 2: Augmenter le nombre maximal de shells par utilisateur
Si vous exécutez des scripts complexes, vous pourriez atteindre la limite par défaut pour les shells distants simultanés. Vous pouvez augmenter cette valeur sur le serveur distant.
- Ouvrez. PowerShell as an Administrator sur l'appareil de destination.
- Exécutez cette commande pour vérifier vos limites actuelles:
Get-Item WSMan:\localhost\Shell\MaxShellsPerUser - Augmentez la limite (par exemple en la fixant à 50) en exécutant:
Set-Item WSMan:\localhost\Shell\MaxShellsPerUser 50
Correction 3: Réétablissement de la session PowerShell
Si cette erreur apparaît dans un script PowerShell en cours d'exécution, l'objet de session existant est mort. Vous devez fermer explicitement la session cassée et en créer une nouvelle.
- Cherchez votre variable de session dans votre script (généralement nommé quelque chose comme
$session) et de l'Union européenne. - Ajouter du code pour supprimer la session brisée en toute sécurité:
Remove-PSSession $session -ErrorAction SilentlyContinue - Créez une nouvelle session avant d' exécuter votre prochaine commande:
$session = New-PSSession -ComputerName "RemoteComputerName" Invoke-Command -Session $session -ScriptBlock { YourCommand }
Correction 4: Ajustez les paramètres MaxMemoryPerShellMB
Une allocation de mémoire faible sur la machine distante peut faire écraser le processus de l'ouvrier hôte de la shell WSMan, ce qui entraîne une poignée invalide.
- Ouvrez. PowerShell as an Administrator sur la télécommande.
- Vérifiez la limite de mémoire actuelle par shell:
Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB - Augmentez la limite de mémoire à 2048 Mo (2 Go) pour s'assurer que les scripts ne manquent pas de mémoire:
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048 - Redémarrez le service WinRM pour appliquer les modifications:
Restart-Service winrm
Il y a peut-être des erreurs.. Learn Microsoft