Correction d'erreur de Windows: Paramètre client WinRM Shell nul ou zéro
Description de l'erreur
Cette erreur se produit lorsque vous utilisez l'outil de gestion à distance de Windows (WinRM) pour exécuter des commandes sur un système distant via Windows Remote Shell ( winrs Le message spécifique The WinRM Shell client cannot process the request. One of the parameters required for the WinrsCloseShell function is null or zero indicates a protocol mismatch, unexpected connection termination, or session corruption.
Il se produit généralement lorsque l'hôte distant met fin au contexte d'exécution de la commande de manière inattendue, ou lorsque la communication est bloquée par un périphérique réseau, un pare-feu ou un logiciel de sécurité à mi-session. Il peut également être causé par une configuration WinRM obsolète, des sessions de shell endommagées sur le serveur cible ou des politiques de groupe strictes imposant des temps d'arrêt de connexion agressifs.
Réparations étape par étape
Suivez ces étapes séquentiellement pour résoudre le problème. Vous pouvez avoir besoin de privilèges d'administrateur sur la machine locale et la machine cible distante.
Étape 1: redémarrer le service WinRM sur les deux machines
Un état de mémoire endommagé ou une session suspendue peut causer cette erreur. Le redémarrage du service de gestion à distance de Windows effacera les sessions existantes.
- Appuie sur le... Windows Key + X et sélectionnez Terminal (Admin) ou... Command Prompt (Admin).
- Tapez la commande suivante pour arrêter le service:
net stop winrm - Tapez la commande suivante pour redémarrer le service:
net start winrm - Effectuez ces étapes à la fois sur votre ordinateur local et sur le serveur distant auquel vous essayez de vous connecter.
Étape 2: Augmenter le nombre maximal de shells WinRM et de mémoire maximale par shell
L'erreur peut se produire si votre session atteint les limites maximales des ressources allouées sur le serveur distant, obligeant le serveur à fermer le shell de manière inattendue.
- Ouvrez PowerShell ou le programme de commande comme un Administrator Sur le... remote machine.
- Exécutez la commande suivante pour vérifier les limites de configuration actuelles:
winrm get winrm/config/winrs - Augmenter la mémoire maximale autorisée par shell à 2048 MB en exécutant:
winrm set winrm/config/winrs @{MaxMemoryPerShellMB="2048"} - Augmenter le nombre maximal de shells simultanés autorisés par utilisateur à 30 en exécutant:
winrm set winrm/config/winrs @{MaxShellsPerUser="30"} - Redémarrez le service WinRM sur la machine distante en utilisant les instructions de l'étape 1 pour appliquer les modifications.
Étape 3: Vérifier et réenregistrer les composants de service WinRM
Les configurations d'infrastructure manquantes ou les corruptions de l'écoutant peuvent faire tomber les paramètres à mi-session.
- Ouvrez PowerShell comme un Administrator Sur le... remote server.
- Exécuter la commande de réglage d'auto-réparation:
winrm quickconfig - If the service is already configured, it will analyze your environment. If it asks you to make changes or open firewall exceptions, type
yet appuyez. Enter.
Étape 4: Ajustez les temps d'arrêt du réseau et les paramètres de maintien en vie
Si un pare-feu ou un équilibreur de charge physique laisse tomber des connexions inactives, le client WinRM tentera de fermer un shell qui n'existe plus sur le serveur, provoquant une erreur de paramètre nul.
- Ouvrez PowerShell comme un Administrator À votre place. local machine.
- Exécutez cette commande pour vérifier les valeurs de temps d'arrêt de votre client:
winrm get winrm/config/client - Augmenter la limite de temps d'arrêt opérationnel à 5 minutes (300 000 millisecondes) afin d'éviter les chutes prématurées de déconnexion:
winrm set winrm/config/client @{Timeout="300000"}
Étape 5: Vérifiez la compatibilité de Windows Update et de la version PowerShell
A known protocol bug in older versions of the Windows Management Framework (WMF) can trigger this specific WinrsCloseShell erreur lors de la communication entre différentes versions de Windows Server.
- Vérifiez votre version de PowerShell sur les deux machines en exécutant:
$PSVersionTable.PSVersion - Si votre ordinateur distant exécute Windows Server 2012 ou Windows Server 2016 avec une version obsolète de WMF 5.1, accédez à Windows Update.
- Installez toutes les mises à jour de qualité cumulatives en attente sur les deux machines pour corriger les binaires du moteur WinRM sous-jacents.
Il y a peut-être des erreurs.. Learn Microsoft