إصلاح خطأ ويندوز: لا يمكن لعميل WinRS معالجة الطلب
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, "المعلم المطلوب لوظيفة WinrsFreePullResult هو صفر" يشير إلى عدم تطابق البروتوكول، حالة جلسة فاسدة، مشاكل في تحديد حجم العازل، أو قطع غير متوقع لحمل البيانات بين العميل والجهاز المستهدف البعيد أثناء استرداد البيانات.
فيما يلي وصف كامل ومفصل لما يحدث هذا ودليل شامل خطوة بخطوة لإصلاحه.
نظرة عامة على الخطأ وأسبابه
الـ WinrsFreePullResult function هي مكالمة API داخلية يستخدمها عميل Windows Remote Shell لتحرير موارد الذاكرة المخصصة لسحب نتائج تنفيذ الأوامر من الخادم البعيد. عندما تتلقى هذه الوظيفة معيار صفر أو صفر ، فهذا يعني أن جانب العميل يتوقع مؤشر ذاكرة صالح أو حجم قطعة بيانات من تيار الشبكة ، لكنه تلقى استجابة فارغة أو تالفة بدلاً من ذلك.
تشمل العوامل الشائعة لهذا الخطأ:
- Buffer Limit Exhaustion: إن مخرج الأوامر على الآلة البعيدة كبير جداً بالنسبة لمعازل WinRM المهيأة أو حدود حجم الإخراج.
- WinRM Service Glitches: خدمة WinRM إما على العميل المحلي أو المضيف البعيد دخلت حالة غير مستقرة.
- MaxShellsPerUser Limits: تجاوز حساب المستخدم الحد الأقصى لعدد الغلافات البعيدة المتزامنة المسموح بها من قبل سياسة المضيف.
- Network Security Interruption: تقطع جدران الحماية أو فحص الحزم العميقة (DPI) أو قطرات VPN اتصال RPC / WS-Management في منتصف الإرسال ، مما يؤدي إلى عودة حمولة صالحة صفر.
إصلاحات خطوة بخطوة
اتبع هذه الخطوات بالتسلسل لحل الخطأ. ستحتاج إلى امتيازات إدارية على كل من الكمبيوتر العميل والجهاز البعيد لتنفيذ هذه الأوامر.
الخطوة 1: إعادة تشغيل خدمة WinRM
أسرع حل لتلف جلسة مؤقتة هو إعادة تشغيل خدمة إدارة ويندوز عن بعد على كل من الآلات.
- افتح قائمة البدء، اكتب cmd انقر على الزر الأيمن Command Prompt ، وتحديد Run as administrator.
- اكتب الأمر التالي لإيقاف الخدمة:
net stop winrm - اكتب الأمر التالي لبدء الخدمة من جديد:
net start winrm - قم بتنفيذ هذه الخطوات المتطابقة على الجهاز البعيد إذا كان لديك وصول بديل إليه (على سبيل المثال ، عبر RDP أو الوصول المادي).
الخطوة 2: زيادة MaxMemoryPerShellMB وذخائر الخروج
إذا كان الأمر الذي تقوم بتشغيله يولد كميات هائلة من النص أو بيانات الإخراج، فإن حدود الذاكرة الافتراضية لـ WinRM ستسقط الاتصال وتسبب هذا الخطأ.
- على... Remote Target Machine ، مفتوحة PowerShell as an Administrator.
- تحقق من حدود التكوين الحالية عن طريق تشغيل:
Get-Item WSMan:\localhost\Shell\* - زيادة الذاكرة المخصصة لكل قذيفة من الافتراضية (عادة 512MB أو 1024MB) إلى 2048MB عن طريق تشغيل:
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048 - قم بزيادة الحد الأقصى لعدد القذائف المتزامنة المسموح بها لكل مستخدم لضمان عدم اختناق الجلسة:
Set-Item WSMan:\localhost\Shell\MaxShellsPerUser 30 - إعادة تشغيل خدمة WinRM لتطبيق هذه التغييرات:
Restart-Service winrm
الخطوة الثالثة: تعديل URIات وإعدادات الإيقاف الزمني على العميل
إذا أسقط العميل الطلب أثناء انتظار استجابة طويلة، يصبح مؤشر البيانات الداخلية صفرًا. يمكنك تمديد قيم توقيت العملية.
- على... Local Client Machine ، مفتوحة PowerShell as an Administrator.
- حدد الموعد الزمني الهيكلي الافتراضي أعلى للسماح بتكملة تدفقات البيانات الكبيرة بنجاح:
Set-Item WSMan:\localhost\Client\DefaultPorts\HTTP 5985 Set-Item WSMan:\localhost\Client\NetworkDelayms 60000 - إذا كنت تقوم بتنفيذ الأمر باستخدام
winrsقابل للتنفيذ، إضافة-tالمعيار لزيادة وقت التنفيذ يدويًا. على سبيل المثال:winrs -r:RemoteComputerName -t:600 "your-command-here"(ملاحظة:
-t:600تعيين العلامات عتبة التوقيت إلى 600 ثانية).
الخطوة 4: إعادة تسجيل وإصلاح تكوين WinRM
إذا أصبحت التكوينات غير مرتبة أو تعرضت وصفات الأمان للضرر ، فيمكن إعادة تعيين بنية تحتية WinRM listener إصلاح النقاط النهائية الكامنة.
- على... Remote Target Machine ، مفتوحة Command Prompt as an Administrator.
- قم بتشغيل أداة التكوين لإصلاح المستمعين وفتح استثناءات جدار الحماية تلقائيًا:
winrm quickconfig - إذا طُلب منك إجراء تغييرات أو تحليل الحالة، اضغط y وأضرب Enter أن تقبل.
- إذا كان الإعداد قيد التشغيل بالفعل، قم بإعادة تعيين إعدادات التكوين بالكامل إلى الحالات الافتراضية باستخدام:
winrm invoke restore winrm/config @{} - أعد التشغيل
winrm quickconfigبعد استعادة لإعادة بناء النقاط النهائية النظيفة.
الخطوة 5: تحقق من فحص حزم الشبكة وحجم MTU
يمكن أن تتجزأ الحزم الكبيرة التي تحتوي على حمولات بيانات عبر طرق الشبكة. إذا قامت جدار الحماية بإزالة الحزم اللاحقة ، فإن العميل يواجه خطأ المعيار الصفر.
- قم بإيقاف فحص الحزم العميقة المؤقتة أو فحص حركة المرور HTTP للبوابات
5985(HTTP) و5986(HTTPS) داخل جدران الحماية المحلية أو محيط الشبكة. - Ensure that your Network Interface Card (NIC) Maximum Transmission Unit (MTU) size matches on both client and host (Standard value is
1500يمكنك التحقق من هذا في مدخل الأوامر عن طريق: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
قد يكون هناك بعض الأخطاء. Learn Microsoft