إصلاح خطأ ويندوز: WinRM Shell Client Parameter صفر أو صفر
وصف للخطأ
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: "لا يمكن لعميل WinRM Shell معالجة الطلب. واحدة من المعلمات المطلوبة لوظيفة WSManRunShellCommand هي صفر أو صفر".
عادة ما تحدث هذه المشكلة بسبب عدم التطابق في تكوين WinRM بين العميل والخادم ، أو المتغيرات البيئية التالفة على جهاز الهدف ، أو تم تمرير سلسلة أوامر فارغة إلى واجهة برمجة التطبيقات WinRM. عندما تتلقى خدمة WinRM حمولة أوامر غير مرتبة بشكل صحيح ، أو غير مكتملة ، أو تحتوي على حجج فارغة ، فإنها تفشل في تنفيذ الدالة وتلقي هذا الاستثناء.
إصلاحات خطوة بخطوة
اتبع هذه الخطوات لحل المشكلة.
الخطوة 1: التحقق من حمولة القيادة
السبب الأكثر شيوعًا هو تمرير سلسلة أوامر فارغة أو خالية إلى محرك التنفيذ عن بعد.
- تحقق من النص أو البرنامج (مثل Ansible أو Jenkins) الذي يسبب الخطأ.
- تأكد من أن المتغيرات التي تحتوي على الأوامر ليست فارغة أو غير محددة أو تقييمها إلى قيمة صفر.
- إذا كنت تستخدم كتلة من الرموز، تحقق من عدم وجود أخطاء نحوية تسبب كسر سلسلة الأوامر قبل إرسالها.
الخطوة 2: التحقق من متغيرات بيئة مسار النظام وإصلاحها
نظام فاسد أو مفقود Path variable on the target remote machine can prevent WinRM from finding the required executables (like cmd.exe أو powershell.exe ), مما يجعلها تمر بمعلم صفر داخليا.
- على جهاز ويندوز المستهدف، افتح قائمة البدء، اكتب Environment Variables ، وتحديد Edit the system environment variables.
- انقر على Environment Variables... زر في أسفل النافذة.
- تحت System variables ، تحديد موقع Path المتغير والنقر Edit.
- تأكد من وجود الإدخالات الحرجة التالية:
%SystemRoot%\system32%SystemRoot%%SystemRoot%\System32\Wbem%SystemRoot%\System32\WindowsPowerShell\v1.0\
- إذا كان أي من هذه المفقودة، انقر New وأضافها يدويا.
- انقر OK لحفظ جميع التغييرات وإعادة تشغيل الكمبيوتر لتطبيقها.
الخطوة 3: زيادة WinRM MaxShellsPerUser و MaxMemoryPerShell
إذا كان الخادم المستهدف ينفذ من موارد WinRM المخصصة ، فقد يسقط المعايير أثناء المعالجة.
- انقر بزر الماوس الأيمن على قائمة بدء نظام التشغيل و حدد Windows PowerShell (Admin) أو Command Prompt (Admin) على آلة الهدف
- تحقق من حدود تكوين WinRM الحالية عن طريق تشغيل:
winrm get winrm/config/winrs - زيادة الحد الأقصى للذاكرة المخصصة لكل قشرة لمنع انخفاض الذاكرة:
winrm set winrm/config/winrs @{MaxMemoryPerShellMB="1024"} - زيادة الحد الأقصى لعدد الغلافات المتزامنة لكل مستخدم للتعامل مع طلبات متوازية متعددة:
winrm set winrm/config/winrs @{MaxShellsPerUser="30"}
الخطوة 4: إعادة تشغيل خدمة إدارة ويندوز عن بعد
تطبيق تغييرات التكوين الجديدة من خلال إعادة تشغيل خدمة WinRM.
- افتح PowerShell كمسؤول
- قم بتشغيل الأمر التالي لإعادة تشغيل خدمة WinRM:
Restart-Service WinRM -Force - إذا كنت تستخدم برنامج التعليمات البرمجية القياسي، قم بتشغيل هذه الأوامر بدلاً من ذلك:
net stop winrm net start winrm
الخطوة 5: إعادة تسجيل مكونات WSMan (إذا كانت فاسدة)
إذا كانت ملفات WSMan DLL الأساسية غير مسجلة أو تالفة، يمكنك إعادة تسجيلها لإصلاح مشاكل النظام العميقة.
- افتح برنامج التعليمات البرمجية كمسؤول
- تنفيذ الأوامر التالية واحدة تلو الأخرى لإعادة تسجيل المكونات الأساسية:
regsvr32 WsmSvc.dll regsvr32 WsmWmiPl.dll - إعادة تشغيل الجهاز بعد أن تظهر نوافذ تأكيد التسجيل
قد يكون هناك بعض الأخطاء. Learn Microsoft