كيفية إصلاح "عميل WinRS لا يستطيع معالجة الطلب. المعيار المطلوب لوظيفة WinrsCloseReceiveHandle هو صفر أو صفر".
وصف الخطأ
This error typically occurs when using Windows Remote Management (WinRM) or Windows Remote Shell (WinRS) to execute commands on a remote machine. The message "The WinRS client cannot process the request. The parameter required for the WinrsCloseReceiveHandle function is null or zero" يشير إلى عدم تطابق البروتوكول أو حالة جلسة تالفة أو فشل في التعامل مع مؤشرات الذاكرة / المعاملات بين العميل المحلي والمضيف البعيد. غالباً ما يتم تشغيله بعد تغيير تحديثات Windows محددة لسلوكيات أمان WinRM ، عندما تتجاوز حدود WS-Management (مثل MaxShellsPerUser أو MaxMemoryPerShellMB) ، أو عندما يكون هناك انقطاع نشط في تيار الشبكة يغلق المعاملات قبل الأوان.
إصلاحات خطوة بخطوة
اتبع هذه الحلول خطوة بخطوة لحل المشكلة.
الطريقة 1: إعادة تشغيل خدمة WinRM
عبارة عن عقدة جلسة WinRM عالقة أو تالفة على جهاز العميل أو جهاز المضيف هي السبب الأكثر شيوعًا. إعادة تشغيل الخدمة يزيل هذه المعاملات.
- افتح الباب Start Menu ، نوع
cmdانقر على الزر الأيمن Command Prompt ، وتحديد Run as administrator. - اكتب الأمر التالي لإيقاف الخدمة واضغط Enter:
net stop winrm - اكتب الأمر التالي لبدء الخدمة من جديد واضغط Enter:
net start winrmملاحظة: قم بإجراء هذا على كل من جهاز العميل المحلي و جهاز الهدف البعيد إذا كان لديك إمكانية الوصول.
الطريقة 2: زيادة حصص تكوين WinRM
إذا نفذت القشرة البعيدة من الذاكرة المخصصة أو السماح بالقشرات المتزامنة ، فسوف تسقط المقبضات فجأة ، مما يؤدي إلى أخطاء المعلمات الصفرية.
- افتح Command Prompt كمدير على remote target machine.
- قم بتشغيل الأمر التالي للتحقق من حدود تكوين WinRM الحالية:
winrm get winrm/config/winrs - زيادة الحد الأقصى للذاكرة لكل قذيفة من خلال تنفيذ هذه الأوامر (تعيينها إلى 2048 ميغابايت):
winrm set winrm/config/winrs @{MaxMemoryPerShellMB="2048"} - زيادة الحد الأقصى لعدد الغلافات المتزامنة المسموح بها لكل مستخدم لضمان عدم إغلاق المقبض بقوة:
winrm set winrm/config/winrs @{MaxShellsPerUser="30"} - إعادة تشغيل خدمة WinRM لتطبيق التغييرات:
net stop winrm && net start winrm
الطريقة 3: إصلاح وإعادة تسجيل مكونات WinRM
Corrupted registry entries or system files related to the Windows Remote Shell can cause API functions like WinrsCloseReceiveHandle لتلقي المعلمات الصفرية.
- افتح Command Prompt كمدير
- قم بتشغيل أداة فحص موارد ويندوز لإصلاح ملفات النظام المفقودة أو التالفة:
sfc /scannow - انتظر حتى ينتهي الفحص. إذا تم العثور على أخطاء وتصحيحها، قم بإعادة تشغيل الكمبيوتر.
- بعد ذلك، قم بإعادة ضبط تكوين WinRM إلى حالته الآمنة الافتراضية عن طريق تشغيل:
winrm quickconfigالنوع
y(نعم) إذا تم طلب إجراء تغييرات في الهندسة المعمارية أو فتح استثناءات جدار الحماية.
طريقة 4: تحديث برامج تشغيل محول الشبكة وإيقاف تشغيل TCP
يمكن أن يؤدي فساد حزم الشبكة أو ميزات التحسين على بطاقات الشبكة إلى إنهاء تيار الاتصال قبل الأوان ، مما يترك المعالجة خالية.
- انقر بزر الماوس الأيمن Start Menu و إختاري Device Manager.
- توسيع Network adapters القسم.
- Right-click your primary network connection adapter (Ethernet or Wi-Fi) and select Properties.
- إذهبي إلى Advanced تيب.
- تحديد الموقع IPv4 Checksum Offload, Large Send Offload (LSO) ، و TCP Checksum Offload ضع قيمهم على Disabled.
- انقر OK لحفظ الإعدادات وإعادة تشغيل اتصال الشبكة
طريقة 5: إزالة ذاكرة التخزين المؤقت المتضاربة لـ Windows Update
إذا بدأت هذه المشكلة في الظهور مباشرة بعد تحديث جودة ويندوز الأخير، فقد يكون هناك خطأ معروف في حزمة التحديث المحددة التي تؤثر على ملفات ثنائية واجهة برمجة التطبيقات WinRS.
- افتح Command Prompt كمدير
- تحقق من وجود التحديثات التي تم تثبيتها مؤخرًا عن طريق تشغيل:
wmic qfe list brief /format:table - حدد رقم تعريف KB المثبت مباشرة قبل بدء حدوث الخطأ.
- قم بإلغاء تثبيت التحديث المشكلة باستخدام الأمر التالي (استبدال
1234567مع رقم KB الفعلي):wusa /uninstall /kb:1234567 - قم بإعادة تشغيل نظامك وحاول تشغيل أمر WinRS مرة أخرى
قد يكون هناك بعض الأخطاء. Learn Microsoft