Correction d'erreur Windows: le client WinRS ne peut pas traiter la demande
This error typically occurs when using Windows Remote Management (WinRM) or Windows Remote Shell (WinRS) to execute commands on a remote computer. The specific error message, "Le paramètre requis pour la fonction WinrsFreePullResult est nul ou nul", indique un désaccord de protocole, un état de session corrompu, des problèmes de dimensionnement du tampon ou une troncation inattendue de la charge utile des données entre le client et la machine cible distante lors de la récupération des données.
Vous trouverez ci-dessous une description complète et détaillée des raisons pour lesquelles cela se produit et un guide détaillé étape par étape pour y remédier.
Vue d' ensemble et causes de l' erreur
le WinrsFreePullResult function est un appel API interne utilisé par le client Windows Remote Shell pour libérer les ressources de mémoire allouées pour extraire les résultats de l'exécution des commandes du serveur distant. Lorsque cette fonction reçoit un paramètre nul ou zéro, cela signifie que le côté client s'attendait à un pointeur de mémoire valide ou à une taille de morceau de données du flux réseau, mais a reçu une réponse vide ou corrompue à la place.
Les causes courantes de cette erreur sont les suivantes:
- Buffer Limit Exhaustion: La sortie de commande sur la machine distante est trop grande pour le tampon WinRM configuré ou les limites de taille de sortie.
- WinRM Service Glitches: Le service WinRM sur le client local ou l'hôte distant est entré dans un état instable.
- MaxShellsPerUser Limits: Le compte utilisateur a dépassé le nombre maximal de shells distants simultanés autorisé par la politique d'hôte.
- Network Security Interruption: Les pare-feu, l'inspection approfondie des paquets (DPI) ou les chutes VPN coupent la connexion RPC/WS-Management au milieu de la transmission, provoquant un retour de charge utile nulle.
Réparations étape par étape
Suivez ces étapes en séquence pour résoudre l'erreur. Vous aurez besoin de privilèges d'administrateur sur l'ordinateur client et sur l'ordinateur distant pour exécuter ces commandes.
Étape 1: redémarrer le service WinRM
La solution la plus rapide pour une session temporaire corrompue est de redémarrer le service de gestion à distance Windows sur les deux machines.
- Ouvrez le menu Démarrer, tapez cmd, cliquez avec le bouton droit. Command Prompt, et sélectionnez Run as administrator.
- 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 mêmes étapes sur la machine distante si vous avez un accès alternatif (par exemple, via RDP ou accès physique).
Étape 2: Augmenter la mémoire maximale par ShellMB et les tampons de sortie
Si la commande que vous exécutez génère des quantités massives de texte ou de données de sortie, les limites de mémoire WinRM par défaut supprimeront la connexion et déclencheront cette erreur.
- Sur le... Remote Target Machine Ouvrez ! PowerShell as an Administrator.
- Vérifiez les limites de configuration actuelles en exécutant:
Get-Item WSMan:\localhost\Shell\* - Augmentez la mémoire allouée par shell par défaut (généralement 512MB ou 1024MB) à 2048MB en exécutant:
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048 - Augmentez le nombre maximum de coquilles simultanées autorisées par utilisateur pour vous assurer que votre session n'est pas étouffée:
Set-Item WSMan:\localhost\Shell\MaxShellsPerUser 30 - Redémarrez le service WinRM pour appliquer ces modifications:
Restart-Service winrm
Étape 3: Modifier les URI et les paramètres de Timeout sur le client
Si le client abandonne la requête en attendant une réponse longue, le pointeur de données interne devient nul. Vous pouvez étendre les valeurs de temps d'arrêt de l'opération.
- À votre place. Local Client Machine Ouvrez ! PowerShell as an Administrator.
- Réglez le temps d'arrêt structurel par défaut plus haut pour permettre aux grands flux de données de se terminer avec succès:
Set-Item WSMan:\localhost\Client\DefaultPorts\HTTP 5985 Set-Item WSMan:\localhost\Client\NetworkDelayms 60000 - Si vous exécutez la commande en utilisant le
winrsExécutable, ajouter le-tparamètre permettant d'augmenter le temps d'exécution manuellement. Par exemple:winrs -r:RemoteComputerName -t:600 "your-command-here"(Note: le
-t:600les drapeaux fixent le seuil de temps d'arrêt à 600 secondes).
Étape 4: Réenregistrer et réparer la configuration WinRM
Si les configurations sont devenues mal alignées ou si les descripteurs de sécurité sont endommagés, la réinitialisation de l'infrastructure d'écoute WinRM peut réparer les endpoints sous-jacents.
- Sur le... Remote Target Machine Ouvrez ! Command Prompt as an Administrator.
- Exécutez l' utilitaire de configuration pour réparer les auditeurs et ouvrir automatiquement les exceptions du pare-feu:
winrm quickconfig - Si vous êtes invité à apporter des modifications ou à analyser l'état, appuyez sur y et frappe. Enter Pour l'accepter.
- Si la configuration est déjà en cours d'exécution, réinitialisez complètement les paramètres de configuration aux états par défaut en utilisant:
winrm invoke restore winrm/config @{} - Retourne.
winrm quickconfigaprès une restauration pour reconstruire des points d'extrémité propres.
Étape 5: Vérifiez l'inspection des paquets réseau et la taille des MTU
Les grands paquets contenant des charges utiles de données peuvent être fragmentés sur les itinéraires du réseau.
- Désactiver l' inspection temporaire des paquets profonds ou l' analyse du trafic HTTP pour les ports
5985(HTTP) et5986(HTTPS) dans les pare-feu de périmètre local ou réseau. - Ensure that your Network Interface Card (NIC) Maximum Transmission Unit (MTU) size matches on both client and host (Standard value is
1500Vous pouvez vérifier cela dans l'invite de commande via:netsh interface ipv4 show subinterfaces
ERROR_WINRS_CLIENT_SIGNAL_NULL_PARAM | ERROR_WINRS_CLIENT_RECEIVE_NULL_PARAM | ERROR_WINRS_CLIENT_PULL_NULL_PARAM | ERROR_WINRS_CLIENT_CLOSERECEIVEHANDLE_NULL_PARAM | ERROR_WINRS_CLIENT_SEND_NULL_PARAM
Il y a peut-être des erreurs.. Learn Microsoft