كيفية إصلاح "عميل WinRM Shell لا يستطيع معالجة الطلب. واحدة من المعلمات المطلوبة لوظيفة WSManSignalShell هي صفر أو صفر".
وصف الخطأ
يحدث هذا الخطأ عندما يحاول عميل Windows Remote Management (WinRM) إرسال إشارة تحكم (مثل إنهاء عملية أو إغلاق جلسة) إلى قذيفة بعيدة ، ولكن واجهة برمجة برمجة التشغيل WS-Management الأساسية تتلقى معايير غير صالحة أو مفقودة أو صفر ( WSManSignalShell هذا يشير عادة إلى عدم تطابق التكوين بين العميل المحلي والمضيف البعيد ، وحالات جلسة القشرة المتلفة ، ومكونات Windows PowerShell / WinRM القديمة ، أو سياسات أمن الشبكة المقيدة التي تمنع حمولة الإشارة المحددة.
إصلاحات خطوة بخطوة
الخطوة 1: إعادة تشغيل خدمة WinRM
يمكن أن تسبب خدمة WinRM المتعثرة أو المجمدة على الكمبيوتر المحلي أو الخادم البعيد فشل في تسليم المعلمات. إعادة تشغيل الخدمة يعيد تحديث الحالة.
- اضغط Windows Key + X و إختاري Terminal (Admin) أو Command Prompt (Admin).
- اكتب الأمر التالي لإيقاف الخدمة واضغط Enter:
net stop winrm - اكتب الأمر التالي لبدء الخدمة من جديد واضغط Enter:
net start winrm - قم بتنفيذ هذه الخطوات على جهازك المحلي وعلى جهاز الهدف البعيد إذا أمكن.
الخطوة 2: تحديث أو إعادة تسجيل مكونات إدارة WS
إذا كانت ملفات النظام المحلي المسؤولة عن وظائف WSMan غير مسجلة أو تالفة ، فقد تمر WinRM بمعلمات صفر.
- افتح Command Prompt as Administrator.
- قم بتشغيل الأمر التالي لإعادة ضبط تكوين WinRM إلى إعداداته الافتراضية:
winrm quickconfig - النوع Y و اضغط Enter إذا تم طلب إجراء تغييرات أو تمكين استثناءات جدار الحماية.
الخطوة 3: زيادة WinRM MaxShellsPerUser و MaxMemoryPerShellMB
عندما تنفذ القشرة البعيدة من الذاكرة المخصصة أو تتجاوز العدد المسموح به من القشرات المتزامنة ، فإنها تسقط أو تفسد حزم الجلسة الواردة ، مما يؤدي إلى قيم صفر في استدعاءات الوظائف.
- افتح PowerShell as Administrator على الجهاز البعيد (أو محلياً إذا كانت هناك عوائق محلية في معالجة الأخطاء).
- تحقق من الحدود الحالية عن طريق تشغيل:
Get-Item WSMan:\localhost\Shell\* - زيادة الحد الأقصى للذاكرة المخصصة لكل قذيفة لضمان عدم انخفاض حمولة الإشارة:
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 1024 - زيادة الحد الأقصى لعدد القذائف المتزامنة المسموح بها لكل مستخدم:
Set-Item WSMan:\localhost\Shell\MaxShellsPerUser 30 - إعادة تشغيل خدمة WinRM باستخدام الأوامر من الخطوة 1 لتطبيق التغييرات.
الخطوة 4: إضافة المضيف المستهدف إلى قائمة المضيفات الموثوق بها
If the client does not fully trust the remote endpoint, certain advanced management signals like WSManSignalShell قد يتم تجريدها بسبب القيود الأمنية.
- افتح PowerShell as Administrator على جهاز العميل المحلي
- قم بتشغيل الأمر التالي للثقة بالجهاز البعيد المحدد (استبدال
REMOTE_IP_OR_NAMEمع عنوان IP أو اسم المضيف لجهاز الكمبيوتر البعيد الفعلي)Set-Item WSMan:\localhost\Client\TrustedHosts -Value "REMOTE_IP_OR_NAME" -Force(ملاحظة: استخدم ` بدلاً من الاسم إذا كنت ترغب في الوثوق بجميع المضيفين لأغراض الاختبار، على الرغم من أن هذا أقل أمناً).*
- إعادة تشغيل خدمة WinRM على جهازك المحلي
الخطوة 5: تحقق من توافق PowerShell و.NET Framework
يمكن أن يؤدي عدم التوافق بين إصدار PowerShell قيد التشغيل على جهاز العميل والإصدار قيد التشغيل على المضيف البعيد إلى تفكيك كائنات المعلمات المتسلسلة بشكل غير صحيح على أنها صفر.
- تحقق من إصدار PowerShell الخاص بك على كلا الآلات عن طريق تشغيل:
$PSVersionTable.PSVersion - إذا كان جهاز واحد يعمل بنسخة قديمة من Windows Management Framework (WMF) أو.NET Framework، قم بتنزيل وتثبيت أحدث التحديثات عبر Windows Update لضمان استخدام كلا النقاط النهائية للبروتوكولات المتطابقة.
قد يكون هناك بعض الأخطاء. Learn Microsoft