خطأ في ويندوز: لا يمكن لعميل WinRM Shell معالجة الطلب
وصف للخطأ
This error occurs when a Windows Remote Management (WinRM) session fails to receive output data from a remote machine. The specific function WSMansReceiveShellOutput يتوقع متغيرات صالحة لمعالجة تيار البيانات. إذا حدث انقطاع الشبكة أو طفرة العازل أو عدم تطابق في حجم البيانات أو الفساد أثناء الإرسال ، يصبح المعيار المطلوب صفرًا أو صفرًا ، مما يؤدي إلى فشل عميل WinRM وإلغاء العملية. يتم تشغيله عادة أثناء البرامج النصية الطويلة ، ونقل البيانات الثقيلة ، أو عندما يكون هناك عدم توافق في تكوينات حجم حزم PowerShell / WinRM بين الأجهزة المحلية والبعيدة.
إصلاحات خطوة بخطوة
Follow these solutions step-by-step to resolve the issue. You must run these commands on both the client (your machine) and the server (remote machine) ما لم ينص على خلاف ذلك.
الحل 1: زيادة WinRM MaxEnvelopeSizeKB
السبب الأكثر شيوعًا هو أن البيانات التي يتم إرجاعها تتجاوز الحجم القياسي الافتراضي للحزم المسموح به بواسطة WinRM.
- اضغط على Start menu ، نوع
cmd، انقر على Command Prompt ، وتحديد Run as administrator. - تحقق من الحجم الحد الأقصى للحزمة الحالية بتنفيذ هذه الأوامر:
winrm get winrm/config - زيادة حجم الغلاف على كل من العميل والأجهزة البعيدة للسماح بحزم بيانات أكبر (على سبيل المثال ، تغييره إلى 8192 كيلوبايت):
winrm set winrm/config @{MaxEnvelopeSizeKB="8192"} - إعادة تشغيل خدمة WinRM لتطبيق التغييرات:
net stop winrm net start winrm
الحل 2: زيادة مزود WSMan MaxMemoryPerShellMB
إذا نفدت الذاكرة المخصصة للقشرة البعيدة أثناء معالجة الإخراج، فإن معايير الوظيفة تفشل.
- افتح PowerShell as an Administrator.
- تحقق من الحد الحالي للذاكرة لكل قذيفة بتشغيل:
Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB - قم بزيادة حد الذاكرة إلى 2048 ميغابايت (أو أعلى اعتماداً على موارد النظام) لمنع حالات نفاد الذاكرة:
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048 - إعادة تشغيل خدمة WinRM لإلتزام التكوين:
Restart-Service winrm
الحل 3: تعديل عازل الخروج في نص PowerShell الخاص بك
إذا حدث الخطأ أثناء أمر معين أو برنامج برمجي، فقد يكون تدفق الناتج يغلب على خط الأنابيب. يمكنك إجبار الأمر على معالجة الناتج في دفعات أصغر أو مسح المخزن المؤقت.
- افتح النص و ابحث عن الأمر الذي يسبب الخطأ
- المرفق
| Out-Buffer -Count 1إلى الأمر لإجبار المعالجة الفورية لكل سطر بيانات بدلاً من تخزين دفعة كبيرة. مثال:Get-WinEvent -LogName Application | Out-Buffer -Count 1 - بدلاً من ذلك، إذا لم تكن بحاجة إلى تدفقات الإخراج التفصيلية، قم بإعادة توجيه الأخطاء والإخراجات الكبيرة إلى null:
Your-Command-Here 2>$null 3>null 4>null
الحل 4: إعادة تعيين وإعادة تكوين إعدادات WinRM
إذا كانت معايير التكوين تالفة، فإن إعادة تعيين بنية WinRM إلى الإعدادات الافتراضية يمكن أن يحل المشاكل الخفية.
- افتح Command Prompt as an administrator.
- قم بتعطيل تكوين مستمع WinRM بالكامل:
winrm invoke ResetListener winrm/config/listener?Address=*+Transport=HTTP - إعادة تشغيل معالج التكوين السريع لإصلاح النقاط النهائية وقواعد جدار الحماية:
winrm quickconfig -q
قد يكون هناك بعض الأخطاء. Learn Microsoft