كيفية إنهاء عملية Windows على نظام عن بُعد

ربما تعمل بسعادة على خادم ويندوز عن بُعد، ثم تجد عملية تعمل بشكل خاطئ وتستهلك دورات وحدة المعالجة المركزية القيمة. ماذا تفعل؟ أقتلها!

في هذا البرنامج التعليمي، ستتعلم كيفية إنهاء عملية ويندوز باستخدام الأدوات الأساسية والأدوات المصادر الخارجية وPowerShell. ستتعلم أولاً كيفية فحص العمليات الجارية في ويندوز ثم قتل العمليات الجارية.

المتطلبات الأساسية

إذا كنت ترغب في متابعة الخطوات في هذا البرنامج التعليمي، تأكد من وجود ما يلي مسبقًا:

  • A Windows PC – All demos in this tutorial will use Windows 10, but Windows 7+ will work also.
  • A Windows Server or another Windows desktop to use as your target for killing the remote tasks. This tutorial uses a standalone Windows Server 2016 as the remote server.
  • مجموعة Sysinternals Suite من Microsoft.
  • Windows PowerShell 5 أو أحدث. يستخدم هذا البرنامج التعليمي PowerShell v7.1.3

استعلام عملية ويندوز البعيدة باستخدام Tasklist

منذ ويندوز إكس بي، هناك أداة مفيدة تسمى Tasklist. Tasklist هي أداة مفيدة تستعلم العمليات على أجهزة الكمبيوتر البعيدة. قبل أن تتمكن من قتل عملية، يجب أن تكتشفها أولاً!

افتح جلسة PowerShell أو سطر الأوامر على سطح المكتب الخاص بك واكتب الأمر التالي لعرض جميع العمليات الجارية على الكمبيوتر البعيد الخاص بك.

الأمر أدناه يستعلم جهاز كمبيوتر بعيد (/S) ويوثق الاتصال باسم المستخدم المسؤول (/U) وكلمة المرور (/P).

tasklist /S WIN-BANGJIEFNOC.local.net /U administrator /P password

ستلاحظ أدناه أن اسم الجلسة لا يظهر. نظرًا لتشغيلك لأمر tasklist على جهاز كمبيوتر بعيد، لا يوفر tasklist اسم الجلسة.

list of processes on a remote server

ربما تفضل فقط سرد عملية واحدة. ليس مشكلة. للقيام بذلك، قم بتحديد المعلمة /FI. تقبل المعلمة /FI استعلامًا يتم تمريره إلى tasklist لتصفية عمليات معينة.

tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'
The output of tasklist showing a specific process

الاستعلام عن عمليات نظام Windows البعيدة باستخدام PSList

أداة أخرى لعرض العمليات الجارية هي PSList، وهذه الأداة جزء من Sysinternals Suite. تلك المجموعة من الأدوات موجودة منذ سنوات عديدة وتم إنشاؤها بواسطة مارك راسينوفيتش، الرئيس التنفيذي لـ Azure!

لنبدأ في كيفية عرض العمليات الجارية على جهاز كمبيوتر بعيد.

1. افتح جلسة PowerShell أو موجه الأوامر على سطح المكتب الخاص بك وقم بتغيير الدليل إلى المكان الذي استخرجت فيه مجموعة Sysinternals.

2. في جلسة PowerShell الخاصة بك، قم بتشغيل الأمر التالي لعرض العمليات الجارية على جهاز الكمبيوتر البعيد واستخدام CPU المرتبط في الوقت الحقيقي.

الأمر أدناه يقوم بتشغيل pslist للاستعلام عن جميع عمليات Windows عن بُعد على جهاز الكمبيوتر WIN-BANGJIEFNOC باستخدام اسم المستخدم Administrator (-u) وكلمة المرور (-p).

الأمر يستخدم التبديل -s الذي يحول pslist إلى “وضع مدير المهام” الذي يحدث القائمة بانتظام.

إذا كانت هذه المرة الأولى التي تستخدم فيها أداة Sysinternals ، فقد يظهر شعار يطلب منك قبول EULA؛ انقر فوق موافق.

.\pslist \\WIN-BANGJIEFNOC.local.net -u Administrator -p 'password' -s

ترى الآن الناتج التالي من تشغيل هذا الأمر ؛ لهذه المقالة ، يهمك 3 من هذه القيم. كما هو موضح أدناه.

  • الاسم: اسم العملية.
  • Pid: معرف العملية ، قيمة حرجة مستخدمة في هذا البرنامج التعليمي ، يمكن استخدام رقم PID لإيقاف عملية عن بُعد. إنه الهوية الرقمية المخصصة لعملية العملية.
  • CPU: يظهر هذا في الوقت الفعلي استخدام وحدة المعالجة المركزية المتاحة بشكل عام.

القيم الأخرى متعلقة بالذاكرة وخارج نطاق هذا المقال.

Output in real-time of pslist

3. بما أن الخطوة الثانية استخدمت التبديل -s ، اضغط على Ctrl-C لإنهاء pslist والعودة إلى وحدة التحكم.

ضيق قائمة العمليات المرجعية باستخدام التبديل -e تليه اسم العملية ، على سبيل المثال ، -e Winlogon.

قتل العمليات حسب اسم العملية باستخدام PSKill

بمجرد أن تعرف كيفية العثور على العمليات عن بعد، دعنا نقفز الآن إلى كيفية قتلها. للبدء، دعونا نغطي أداة pskill . أولاً، تعلم كيفية قتل العمليات حسب اسم العملية.

1. تأكد من وجود عملية يمكنك قتلها على الخادم البعيد. ستستخدم هذا البرنامج التعليمي عملية المفكرة.

2. افتح جلسة PowerShell أو موجه أوامر على سطح المكتب المحلي الخاص بك وقم بتغيير الدليل إلى المكان الذي استخرجت منه مجموعة Sysinternal ثم قم بتشغيل الأمر التالي. يمكنك رؤية الصيغة النحوية لـ pskill تشبه إلى حد كبير pslist.

.\pskill.Exe \\WIN-BANGJIEFNOC.local.net -u administrator -p 'password' -e notepad.exe
Output of pskill

3. الآن، قم بتشغيل pslist، كما شرح في القسم السابق، لتأكيد توقف العملية بالفعل.

.\pslist \\WIN-BANGJIEFNOC.local.net -u Administrator -p 'password' -e notepad.exe
Output of pslist

قتل العمليات حسب معرف العملية باستخدام PSKill

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

1. على الخادم البعيد الخاص بك، افتح المفكرة مرتين؛ ستقوم بقتل واحدة من هذه العمليات في هذا العرض التوضيحي؛ بالطبع يمكنك استبدال العمليات الأخرى.

2. قم بتشغيل الأمر التالي مع ملاحظة واحدة من Pid كما هو موضح أدناه؛ ستحتاج إلى ذلك للخطوة التالية.

.\pslist \\WIN-BANGJIEFNOC.local.net -u Administrator -p password -e notepad
Using pslist to list PID’s of Notepad

3. باستخدام PID، قم الآن بتشغيل pskill، وقدم PID كآخر وسيط.

.\pskill.Exe \\WIN-BANGJIEFNOC.local.net -u administrator -p password 1984
The output of pskill for a particular PID

4. في النهاية، تحقق من أن لديك ما زالت نسخة واحدة من Notepad تعمل من خلال إعادة تشغيل pslist. يجب أن ترى الآن فقط نسخة واحدة من Notepad تعمل.

Output of pslist

قتل عمليات Windows البعيدة باستخدام TaskKill بواسطة الاسم

أداة taskkill هي مدمجة في Windows وتتضمن خيارات سطر الأوامر الإضافية لإعادة تشغيل العمليات باسم المستخدم واسم التطبيق. لنبدأ ونقتل Notepad مرة أخرى!

قتل العملية بالاسم

1. على الخادم البعيد الخاص بك، افتح Notepad؛ Notepad هو العملية التي ستقوم بقتلها في هذا العرض التوضيحي؛ يمكنك، بالطبع، استبدال عملية أخرى.

2. افتح جلسة PowerShell أو موجه الأوامر على سطح مكتبك. كتابة الأمر التالي سيقتل notepad.exe

taskkill /S WIN-BANGJIEFNOC.local.net /you administrator /p password /IM notepad.exe

المخرجات معروضة أدناه:

/IM هو المعلمة للصورة؛ في هذه الحالة، هو notepad.exe

The output of taskkill command

3. للتأكد من توقف العملية، قم بتشغيل tasklist. يجب أن لا ترى أي مهام تطابق تلك الفلتر.

tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'
Output of tasklist using imagename

قتل عمليات Windows البعيدة باستخدام TaskKill بواسطة PID

قتل عملية باستخدام taskkill باستخدام PID ليس مختلفًا كثيرًا عن استخدام اسم العملية. ولكن، نظرًا لعدم القدرة على استخدام الاسم، ستحتاج أولاً إلى العثور على PID ومن ثم تمرير ذلك إلى taskkill.

في افتراض تشغيلك Notepad على جهاز الويندوز البعيد الخاص بك:

1. قم بتشغيل tasklist كما هو موضح أدناه للعثور على مُعرف العملية (PID) لعملية Notepad. احرص على تدوين أحد PID’s كما هو موضح أدناه؛ ستحتاج إليه في الخطوة التالية.

tasklist /S WIN-BANGJIEFNOC.local.net /fi "imagename eq notepad.exe" /U administrator /P 'password'
the output of tasklist to view PIDS

2. الآن، قم بتشغيل taskkill وقدم مُعرف العملية (PID) كآخر وسيط.

taskkill /S WIN-BANGJIEFNOC.local.net /u administrator /p 'password' /PID 3776
The output of taskkill specifying a particular PID

3. في النهاية، قم بتشغيل tasklist للتحقق من توقف العملية.

Output of tasklist

قتل عملية ويندوز عن بُعد باستخدام PowerShell

توفر PowerShell خيارات لقتل العمليات عن بُعد. الأمر الأول Stop-Process لا يمكنه قتل العملية عن بُعد بشكل طبيعي، حيث لا يتيح لك تحديد اسم الكمبيوتر. ولكن يمكنك التغلب على هذه المشكلة عن طريق تشغيل Stop-Process عن بُعد عبر PowerShell Remoting.

1. إذا كان الخادم المضيف والخادم البعيد ليسا في نطاق Active Directory، قدم أولاً اسم مستخدم وكلمة مرور، مما يخلق كائن PSCredential.

$credentials = Get-Credential
Setting up credentials

2. بعد ذلك، نظرًا لأن البرنامج التعليمي سيستخدم SSL للاتصال بالكمبيوتر البعيد وسيستخدم شهادة غير موقعة، قم بإنشاء PSSessionOption سيتم تجاوز فحص الشهادة من قبل جهة الاعتماد الموثوق بها.

$PSSessionOption = New-PSSessionOption -SkipCACheck

3. الآن، قم بالاتصال بالخادم باستخدام أمر Enter-PSSession، الذي ينشئ جلسة تفاعلية إلى الخادم البعيد.

الأمر أدناه يقوم بالاتصال بجهاز الكمبيوتر WIN-BANGJIEFNOC.local.net باستخدام اسم المستخدم وكلمة المرور المقدمة أعلاه (Credential)، ويتجاوز فحص جهة الاعتماد (SessionOption)، ويقوم بالاتصال عبر SSL (UseSSL).

Enter-PSSession -ComputerName WIN-BANGJIEFNOC.local.net -Credential $credentials -SessionOption $PSSessionOption -UseSSL
Using Enter-PsSession for an interactive session

4. بمجرد الاتصال بالمضيف البعيد، قم بفحص العملية التي تريد إنهاء تشغيلها عن طريق تشغيل Get-Process. في هذه الحالة، سترى عملية notepad.

Get-Process -ProcessName Notepad
Output of Get-Process

5. لإيقاف هذه العملية، قم بتشغيل Stop-Process، كما هو موضح أدناه.

Stop-Process -ProcessName Notepad

6. في النهاية، قم بتأكيد إنهاء تشغيل العملية عن طريق إعادة تشغيل Get-Process، ويجب أن تتلقى رسالة خطأ.

Checking for Notepad as a running process

إذا كنت ترغب في إيقاف عملية Windows البعيدة بطريقة غير تفاعلية، استخدم الأمر Invoke-Command باستخدام المعلمات التالية: Invoke-Command -ComputerName WIN-BANGJIEFNOC.local.net -Credential $credentials -ScriptBlock {Stop-Process -ProcessName notepad} -UseSSL. تغليف أمر Stop-Proces في معلمة ScriptBlock يرسل الأمر إلى المضيف البعيد.

Conclusion

تعلمت مختلف الطرق لقتل العمليات عن بُعد وكيفية التغلب على الحالات التي قد تمنع قواعد جدار الحماية على الشبكة من العمل بشكل صحيح. قد ساعدك هذا البرنامج التعليمي أيضًا على إصلاح نظام التشغيل Windows.

الأدوات التي تعلمتها هي أدوات فعّالة؛ استخدمها بحذر!

Source:
https://adamtheautomator.com/how-to-kill-a-windows-process/