إصلاح لخطأ ويندوز: متغير WinRM Shell Client Environment صفر أو صفر
يشرح هذا الدليل الشامل سبب خطأ WinRM ويوفر طرق سهلة خطوة بخطوة لحلها.
نظرة عامة على الأخطاء
معناها
رسالة الخطأ "The WinRM Shell client cannot process the request. One of the environment variable name passed to the WSManCreateShell function is null or zero." يحدث عندما تحاول إدارة ويندوز عن بعد (WinRM) بدء جلسة PowerShell أو عجلة التعليمات عن بعد ، ولكنها تفشل لأن متغيرات البيئة واحدة أو أكثر على الكمبيوتر المحلي (العميل) أو الكمبيوتر البعيد (الخادم) فاسدة أو فارغة أو تم تنسيقها بشكل غير صحيح.
لماذا يحدث ذلك؟
- Empty Environment Variable Names : متغير نظام أو بيئة المستخدم موجود ولكن لديه سلسلة اسم فارغة أو خالية.
- Corrupted Registry Entries : تحتوي متغيرات بيئة تخزين مسار سجل ويندوز على أزواج قيمة مفاتيح مشوهة.
- Bad PowerShell Profiles : النصوص المبدئية مع ملف المستخدم الخاص بك هي حقن المتغيرات صفر في الجلسة النشطة.
- Third-Party Software Interference : أدوات الأمان أو تثبيت التطبيقات غير صحيحة تعديل كتلة بيئة النظام.
إصلاحات خطوة بخطوة
الطريقة 1: فحص وتصحيح المتغيرات البيئية الفارغة باستخدام PowerShell
اسم متغير فارغ داخل كتلة تكوين البيئة هو السبب الأكثر شيوعًا. يمكنك العثور عليه وإزالته باستخدام نافذة PowerShell المحلية.
-
Open PowerShell as Administrator:
- اضغط على Start قائمة الطعام
- النوع PowerShell.
- انقر بجهاز الضغط الأيمن Windows PowerShell و إختاري Run as administrator.
-
Scan for Corrupted Variables:
- نسخ ولصق النص التالي في نافذة باورشل، ثم اضغط Enter:
[Environment]::GetEnvironmentVariables().Keys | ForEach-Object { if ([string]::IsNullOrEmpty($_) -or \(_ -match "^\s*\)") { Write-Host "Found an empty or null environment variable name!" -ForegroundColor Red } }
- نسخ ولصق النص التالي في نافذة باورشل، ثم اضغط Enter:
-
Identify and Remove via GUI (If Found):
- اضغط
Win + Rعلى لوحة المفاتيح الخاصة بك لفتح Run مربع الحوار - النوع
sysdm.cplو اضغط Enter لفتح System Properties. - إذهبي إلى Advanced تيب.
- اضغط على Environment Variables الزر في الأسفل.
- انظر من خلال كليهما User variables و.. System variables.
- ابحثي تحديداً عن أي صف حيث Variable العمود فارغ تماماً، يحتوي على المسافات فقط، أو يعرض رموزاً فاسدة.
- حدد الصف المكسور وانقر Delete.
- انقر OK على جميع النوافذ المفتوحة لحفظ التغييرات.
- اضغط
طريقة 2: تنظيف مفاتيح سجل البيئة
If the GUI does not display the broken variable, it may be hidden as a malformed entry inside the Windows Registry.
-
Open the Registry Editor:
- اضغط
Win + Rعلى لوحة المفاتيح الخاصة بك. - النوع
regeditو اضغط Enter. - انقر Yes إذا ظهرت إشارة تحكم حساب المستخدم (UAC).
- اضغط
-
Check User Environment Variables:
- انتقل إلى المسار التالي في الشريط الجانبي الأيسر:
HKEY_CURRENT_USER\Environment - انظري إلى Name العمود على النافذة اليمنى.
- Ensure every entry has a valid name. If you see an entry with a blank name, right-click it and select Delete.
- انتقل إلى المسار التالي في الشريط الجانبي الأيسر:
-
Check System Environment Variables:
- انتقل إلى المسار التالي:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment - تحقق من Name العمود على النافذة اليمنى.
- حدد أي إدخالات ذات أسماء خالية أو فارغة أو مساحة فقط.
- انقر بزر الماوس الأيمن على إدخال غير صالح واختيار Delete.
- انتقل إلى المسار التالي:
-
Restart Your Computer:
- أغلق محرر السجل
- إعادة تشغيل جهاز الكمبيوتر لتطبيق تغييرات السجل على حالة النظام
طريقة 3: إعادة تعيين خدمة WinRM
إذا كانت متغيرات البيئة واضحة ولكن عميل WinRM لا يزال معطلًا ، فإن إعادة تعيين تكوينات خدمة WinRM ستعيد العمليات الافتراضية.
-
Open Command Prompt as Administrator:
- اضغط على Start قائمة الطعام
- النوع
cmd. - انقر بجهاز الضغط الأيمن Command Prompt و إختاري Run as administrator.
-
Run WinRM Quick Config:
- اكتب الأوامر التالية واضغط Enter:
winrm quickconfig - إذا طُلب منك إجراء تغييرات أو تحليل التكوينات، اكتب
y(نعم) والضغط Enter.
- اكتب الأوامر التالية واضغط Enter:
-
Restart the WinRM Service:
- قم بتشغيل هذه الأوامر بالتسلسل Enter بعد كل:
net stop winrm net start winrm
- قم بتشغيل هذه الأوامر بالتسلسل Enter بعد كل:
الطريقة 4: اختبار اتصال WinRM
بعد تطبيق الإصلاحات، تحقق من أن WSManCreateShell تم حل خطأ التمهيدي
- افتح واحداً جديداً PowerShell النافذة.
- قم بتشغيل أمر اختبار الحلقة المحلية للتأكد من أن عميل القشرة يعالج المتغيرات بشكل صحيح:
Test-WSMan - إذا نجحت ، اختبر اتصال القشرة البعيدة بشكل صريح باستخدام:
Enter-PSSession -ComputerName localhost(استبدال)
localhostمع اسم هدف الخادم البعيد إذا كنت تتصل بجهاز خارجي).
قد يكون هناك بعض الأخطاء. Learn Microsoft