Correction d'erreur de Windows: Paramètre client WinRM Shell nul ou zéro
Description de l'erreur
This error occurs when you attempt to run a command or script remotely using Windows Remote Management (WinRM), PowerShell Remoting, or a software provisioning tool like Ansible, Jenkins, or Terraform. The specific error message states: "Le client WinRM Shell ne peut pas traiter la requête. L'un des paramètres requis pour la fonction WSManRunShellCommand est nul ou nul".
Ce problème est généralement déclenché par un déséquilibre dans la configuration WinRM entre le client et le serveur, des variables d'environnement corrompues sur la machine cible ou une chaîne de commandes vide étant transmise à l'API WinRM. Lorsque le service WinRM reçoit une charge utile de commande mal formatée, incomplète ou contenant des arguments vides, il ne parvient pas à exécuter la fonction et jette cette exception.
Réparations étape par étape
Suivez ces étapes pour résoudre le problème.
Étape 1: Vérifier la charge utile de la commande
La cause la plus fréquente est de passer une chaîne de commande vide ou nulle au moteur d'exécution à distance.
- Vérifiez le script ou le logiciel (comme Ansible ou Jenkins) qui déclenche l'erreur.
- Assurez-vous que les variables contenant les commandes ne sont pas vides, non définies ou n'ont pas une valeur nulle.
- Si vous utilisez un bloc de code, vérifiez qu'il n'y a pas d'erreurs de syntaxe qui causent la cassure de la chaîne de commande avant son envoi.
Étape 2: Vérification et réparation des variables d'environnement du chemin du système
Un système corrompu ou manquant. Path variable on the target remote machine can prevent WinRM from finding the required executables (like cmd.exe ou... powershell.exe ), ce qui lui permet de passer un paramètre nul en interne.
- Sur la machine Windows cible, ouvrez le menu Démarrer, tapez Environment Variables, et sélectionnez Edit the system environment variables.
- Cliquez sur le Environment Variables... le bouton en bas de la fenêtre.
- sous System variables, localiser le Path variable et cliquez Edit.
- S'assurer que les entrées critiques suivantes existent:
%SystemRoot%\system32%SystemRoot%%SystemRoot%\System32\Wbem%SystemRoot%\System32\WindowsPowerShell\v1.0\
- Si l'un d'entre eux manque, cliquez New et les ajouter manuellement.
- Cliquez. OK pour enregistrer toutes les modifications et redémarrer l'ordinateur pour les appliquer.
Étape 3: Augmenter le WinRM MaxShellsPerUser et le MaxMemoryPerShell
Si le serveur cible est à court de ressources WinRM allouées, il pourrait laisser tomber les paramètres pendant le traitement.
- Cliquez avec le bouton droit sur le menu Démarrer Windows et sélectionnez Windows PowerShell (Admin) ou... Command Prompt (Admin) sur la machine cible.
- Vérifiez les limites de configuration actuelles de WinRM en exécutant:
winrm get winrm/config/winrs - Augmenter la mémoire maximale allouée par shell pour éviter les chutes hors mémoire:
winrm set winrm/config/winrs @{MaxMemoryPerShellMB="1024"} - Augmenter le nombre maximum de shells simultanés par utilisateur pour gérer plusieurs requêtes parallèles:
winrm set winrm/config/winrs @{MaxShellsPerUser="30"}
Étape 4: Redémarrez le service de gestion à distance de Windows
Appliquez les nouvelles modifications de configuration en redémarrant le service WinRM.
- Ouvrez PowerShell en tant qu'administrateur.
- Exécutez la commande suivante pour redémarrer le service WinRM:
Restart-Service WinRM -Force - Si vous utilisez l'invite de commande standard, exécutez ces commandes à la place:
net stop winrm net start winrm
Étape 5: Réenregistrer les composants WSMan (s'ils sont corrompus)
Si les fichiers WSMan DLL sous-jacents ne sont pas enregistrés ou corrompus, vous pouvez les réenregistrer pour résoudre les problèmes profonds du système.
- Ouvrez l'invite de commande en tant qu'administrateur.
- Exécuter les commandes suivantes une par une pour réenregistrer les composants de base:
regsvr32 WsmSvc.dll regsvr32 WsmWmiPl.dll - Redémarrez l'appareil après l'apparition des fenêtres de confirmation d'enregistrement.
Il y a peut-être des erreurs.. Learn Microsoft