إصلاح خطأ ويندوز: WinRM Shell Client Parameter صفر أو صفر
وصف للخطأ
يحدث هذا الخطأ عندما تستخدم أداة Windows Remote Management (WinRM) لتنفيذ الأوامر على نظام بعيد عن طريق Windows Remote Shell ( winrs الرسالة المحددة The WinRM Shell client cannot process the request. One of the parameters required for the WinrsCloseShell function is null or zero indicates a protocol mismatch, unexpected connection termination, or session corruption.
يحدث عادة عندما ينهي المضيف البعيد سياق تنفيذ الأوامر بشكل غير متوقع ، أو عندما يتم حظر الاتصال بواسطة جهاز الشبكة أو جدار الحماية أو البرمجيات الأمنية في منتصف الجلسة. يمكن أن يكون السبب أيضًا في تكوين WinRM قديم ، أو جلسات القشرة المتضررة على الخادم المستهدف ، أو سياسات المجموعة الصارمة التي تفرض توقيتات اتصال عدوانية.
إصلاحات خطوة بخطوة
اتبع هذه الخطوات بالتسلسل لحل المشكلة. قد تحتاج إلى امتيازات إدارية على كل من الجهاز المحلي والجهاز المستهدف البعيد.
الخطوة 1: إعادة تشغيل خدمة WinRM على كلا الآلات
حالة ذاكرة فاسدة أو جلسة معلقة يمكن أن تسبب هذا الخطأ. إعادة تشغيل خدمة إدارة ويندوز عن بعد سوف تمحو الجلسات الموجودة.
- اضغط على Windows Key + X و إختاري Terminal (Admin) أو Command Prompt (Admin).
- اكتب الأمر التالي لإيقاف الخدمة:
net stop winrm - اكتب الأمر التالي لبدء الخدمة من جديد:
net start winrm - قم بتنفيذ هذه الخطوات على جهاز الكمبيوتر المحلي الخاص بك وعلى الخادم البعيد الذي تحاول الاتصال به.
الخطوة 2: زيادة WinRM Max Shells و Max Memory لكل Shell
يمكن أن يحدث هذا الخطأ إذا كانت جلستك تصل إلى الحد الأقصى للموارد المخصصة على الخادم البعيد، مما يجبر الخادم على إغلاق القشرة بشكل غير متوقع.
- افتح PowerShell أو برومنت الأوامر كـ Administrator على... remote machine.
- قم بتشغيل الأمر التالي للتحقق من حدود التكوين الحالية:
winrm get winrm/config/winrs - زيادة الحد الأقصى للذاكرة المسموح بها لكل قذيفة إلى 2048 ميغابايت عن طريق تنفيذ:
winrm set winrm/config/winrs @{MaxMemoryPerShellMB="2048"} - زيادة الحد الأقصى لعدد القذائف المتزامنة المسموح بها لكل مستخدم إلى 30 من خلال تنفيذ:
winrm set winrm/config/winrs @{MaxShellsPerUser="30"} - إعادة تشغيل خدمة WinRM على الجهاز البعيد باستخدام تعليمات الخطوة 1 لتطبيق التغييرات.
الخطوة 3: التحقق وإعادة تسجيل مكونات خدمة WinRM
فقدان تكوينات البنية التحتية أو تلف المستمع يمكن أن يسقط المعايير في منتصف الجلسة. إعادة تطبيق أمر التكوين السريع يصلح المشاكل الهيكلية.
- افتح PowerShell كـ Administrator على... remote server.
- قم بتنفيذ أمر الإعداد الذاتي:
winrm quickconfig - If the service is already configured, it will analyze your environment. If it asks you to make changes or open firewall exceptions, type
yو اضغط Enter.
الخطوة الرابعة: تعديل أوقات توقيت الشبكة وإعدادات الإبقاء على قيد الحياة
إذا كان جدار الحماية أو موازنة الحمل المادية تسقط الاتصالات العاطلة، فإن عميل WinRM سيحاول إغلاق قذيفة لم تعد موجودة على الخادم، مما يسبب خطأ المعيار الصفر.
- افتح PowerShell كـ Administrator على... local machine.
- قم بتشغيل هذه الأوامر للتحقق من قيم توقيت العميل:
winrm get winrm/config/client - زيادة حد وقت التوقف التشغيلي إلى 5 دقائق (300000 ميلي ثانية) لمنع انقطاع التوصيل المبكر:
winrm set winrm/config/client @{Timeout="300000"}
الخطوة 5: تحقق من توافق Windows Update و PowerShell الإصدار
A known protocol bug in older versions of the Windows Management Framework (WMF) can trigger this specific WinrsCloseShell خطأ عند التواصل بين إصدارات مختلفة من ويندوز سيرفر.
- تحقق من إصدار PowerShell الخاص بك على كلا الآلات عن طريق تشغيل:
$PSVersionTable.PSVersion - إذا كان جهازك البعيد يعمل بنظام ويندوز سيرفر 2012 أو ويندوز سيرفر 2016 مع إصدار قديم من WMF 5.1، انتقل إلى Windows Update.
- قم بتثبيت كل تحديثات الجودة المتراكمة المعلقة على كل من الآلات لتصحيح محرك WinRM الثنائي الأساسي.
قد يكون هناك بعض الأخطاء. Learn Microsoft