🇬🇧 | 🇩🇪 | 🇫🇷 | 🇪🇸 | 🇨🇳 | 🇸🇦
ليس لدينا DLL ولكن لدينا:
تحليل ملفات ويندوز & مكافحة الفيروسات السريعة عبر الإنترنت

واجهة بسيطة تتميز بالبحث السريع، والتحميل المريح، وهيكل القسم النظيف.

🛡️🔍 التحقق السريع ملفك، مجرد إسقاط على هذه الصفحة.
فحص الفيروسات، التجزئة، التحقق من التوقيع، الهندسة المعمارية، معلومات الذكاء الاصطناعي.

خطأ ويندوز WinRM: WSManSendShellInput Parameter هو صفر أو صفر

الوصف

يحدث هذا الخطأ عادة أثناء جلسات إدارة PowerShell البعيدة (WinRM) عندما يكون هناك عدم تطابق أو فساد أو تحرك تكوين بين جهاز العميل والمضيف البعيد. فهو يعني أن عميل قذيفة WinRM حاول إرسال البيانات إلى نقطة النهاية البعيدة ، ولكن واحدة من المعلمات الهيكلية الأساسية المطلوبة من قبل وظيفة API الداخلية ( WSManSendShellInput ) كانت مفقودة أو فاسدة أو تم تقييمها إلى الصفر.

الأسباب الجذرية الشائعة تشمل:


إصلاحات خطوة بخطوة

اتبع هذه الحلول بشكل متسلسل من جهاز العميل (وحيثما ينطبق ، على جهاز المضيف) لحل المشكلة.

الحل 1: إعادة تشغيل وإعادة تعيين خدمة WinRM

حالة تشغيل فاسدة في خدمة WinRM يمكن أن تتسبب في فشل معايير واجهة برمجة التطبيقات. إعادة تشغيل وتسجيل إعدادات الخدمة غالبا ما يزيل هذا الخطأ.

  1. افتح قائمة البدء، اكتب cmd ، انقر على Command Prompt ، وتحديد Run as administrator.
  2. أوقف خدمة WinRM بتنفيذ الأمر التالي:
    net stop winrm
  3. قم بإعادة تشغيل خدمة WinRM:
    net start winrm
  4. قم بتشغيل أداة التكوين السريع لإصلاح أي معايير افتراضية معطلة أو مستمعين أو استثناءات جدار الحماية:
    winrm quickconfig
  5. النوع y (نعم) إذا طُلب منك إجراء تغييرات أو إنشاء مستمع WinRM جديد.

الحل 2: إزالة حدود MaxShellsPerUser و MaxMemoryPerShellMB

If the remote shell process hits an allocation limit, it may fail to populate the parameters required by the WSManSendShellInput الوظيفة.

  1. إطلاق PowerShell as an Administrator على كل من العميل والجهاز البعيد (إذا كان متاحاً).
  2. تحقق من معايير التكوين القائمة عن طريق تشغيل:
    Get-Item WSMan:\localhost\Shell\*
  3. زيادة الحد الأقصى للذاكرة لكل قذيفة لضمان أن الكائنات المعقدة لا تتقطع إلى كائنات صفرية:
    Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048
  4. زيادة عدد القذائف المسموح بها لكل مستخدم لمنع تعارضات الجلسات المتزامنة:
    Set-Item WSMan:\localhost\Shell\MaxShellsPerUser 30
  5. قم بإعادة تشغيل خدمة WinRM لتطبيق هذه التغييرات على الفور:
    Restart-Service winrm

الحل 3: إعادة بناء مستمعين WinRM

إذا كان لدى المستمعين الافتراضيين خصائص فاسدة، يجب عليك حذفها بالكامل وإعادة بناؤها للتأكد من أن معايير واجهة برمجة التطبيقات تتطابق مع مواصفات النظام الأصلية.

  1. افتح Command Prompt as an administrator.
  2. عرض مستمعين WinRM النشطين حالياً بتشغيل:
    winrm enumerate winrm/config/listener
  3. قم بحذف المستمعين الخاطئين بالكامل باستخدام هذه الأوامر:
    winrm delete winrm/config/listener?Address=*+Transport=HTTP

    (ملاحظة: قم بتغيير HTTP إلى HTTPS إذا كانت البنية التحتية لشبكتك تستخدم WinRM على وجه التحديد عبر SSL).

  4. إعادة إنشاء البنية التحتية للمستمع من قوالب النظام النظيفة:
    winrm quickconfig

الحل 4: إصلاح متغيرات البيئة ومسار النظام

The WinRM sub-system relies heavily on underlying system environment variables to process structural payload schemas. Missing entries like %SystemRoot% يمكن أن يؤدي إلى معايير صفر.

  1. اضغط على Windows Key + R ، نوع sysdm.cpl, وأضرب Enter لفتح خصائص النظام.
  2. إبحار إلى Advanced اضغط على التبويب Environment Variables الزر في الأسفل.
  3. تحت... System variables قسم، تحديد مكان المتغير المسمى Path و انقر Edit.
  4. Ensure that the following default Windows paths are explicitly listed. If they are missing, click New إضافة لهم:
    • C:\Windows\system32
    • C:\Windows
    • C:\Windows\System32\Wbem
    • C:\Windows\System32\WindowsPowerShell\v1.0\
  5. انقر OK على جميع النوافذ لحفظ التغييرات، ثم إعادة تشغيل جهاز الكمبيوتر الخاص بك.

الحل 5: تجنب مؤقتًا SSL أو فحص الشبكة

قد تقوم تطبيقات الأمان أو موازين حمولة الأجهزة بإزالة عناوين مخصصة ، مما يؤدي إلى وصول حجج WSMan API فارغة في النقطة النهائية.

  1. إذا كنت تستخدم خادم بروكسي، تجاوزه مؤقتاً لعناوين التوجيه المحلية عن طريق تنفيذ هذا في نافذة PowerShell مرتفعة:
    $env:no_proxy="localhost,127.0.0.1,your-remote-host-ip"
  2. إذا كانت المشكلة معزولة إلى جهاز مستهدف موثوق به معين، أضفها مباشرة إلى قائمة TrustedHosts للعميل الخاص بك للقضاء على تصفية المصافحة:
    Set-Item WSMan:\localhost\Client\TrustedHosts -Value "your-remote-host-name-or-IP" -Force
  3. اختبر تسلسل اتصال الغلاف عن بعد مرة أخرى

للمساعدة في تحديد المشكلة بشكل أكبر، هل يمكن أن تقدم بعض التفاصيل:

ERROR_WINRS_CLIENT_PULL_NULL_PARAM | ERROR_WINRS_CLIENT_CLOSERECEIVEHANDLE_NULL_PARAM | ERROR_WINRS_CLIENT_PUSH_NULL_PARAM | ERROR_WINRS_CLIENT_CLOSESENDHANDLE_NULL_PARAM | ERROR_WINRS_CLIENT_GET_NULL_PARAM

قد يكون هناك بعض الأخطاء. Learn Microsoft