איך להרוג תהליך של Windows במערכת מרוחקת

אולי אתה עובד בשמחה על שרת Windows מרוחק, ואז מגלה תהליך שרץ בצורה שגויה וצורף מעגלי CPU יקרים. מה עושים? הרוג אותו!

במדריך זה, תלמד כיצד להרוג תהליכי Windows באמצעות יישומים פנימיים, יישומים מצד שלישי ופוורשל. תתחיל כדי ללמוד כיצד לבדוק את התהליכים הפעילים בחלונות ולאחר מכן להרוג תהליכים.

דרישות מוקדמות

אם ברצונך להתקדם עם השלבים במדריך זה, וודא שיש לך את הבא לפניך:

  • 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 ממיקרוסופט.
  • Windows PowerShell 5 או גרסה יותר גדולה. במדריך זה נעשה שימוש ב-PowerShell v7.1.3

שאילתת תהליכי Windows מרוחק עם Tasklist

מאז Windows XP, יש כלי שימושי בשם tasklist. Tasklist הוא כלי מועיל המשאיר שאילתות על תהליכים במחשבים מרוחקים. לפני שתוכל להרוג תהליך, עליך ראשית לגלות אותם!

פתח ישיבת PowerShell או את מסלול הפקודות בשולחן העבודה שלך והקלד את הפקודה הבאה כדי להציג את כל התהליכים הפעילים במחשב המרוחק שלך.

הפקודה למטה משאירה שאילתת מחשב מרוחק (/S) ומאמתת את החיבור עם שם משתמש של המנהל (/U) וסיסמה (/P).

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

תשים לב למטה ששם הסשן Session Name אינו מופיע. מכיוון שאת/ה מפעיל/ה את 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. סוויטת כלים זו קיימת כבר שנים רבות ונוצרה על ידי מארק רוסינוביץ', CTO של Azure!

בוא/י נתחיל באיך ניתן להציג תהליכים רציניים במחשב מרוחק.

1. פתח/י סשן PowerShell או פקודה בשורת פקודה על השולחן שלך ושנה/י את התיקייה למקום שבו פירטת/י את סוויטת הכלים Sysinternal.

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: זה מראה בזמן אמת קרוב את הניצול של ה-CPU הזמין שלך באופן כולל.

הערכים האחרים הם קשורים לזיכרון ומחוץ להיקף מאמר זה.

Output in real-time of pslist

3. מכיוון ששלב שני השתמש במתג -s, לחץ על Ctrl-C כדי לצאת מpslist כדי לחזור לקונסול.

צמצם את רשימת התהליכים שהוחזרו על ידי שימוש במתג -e אחריו שם התהליך, לדוגמה, -e Winlogon.

הורג תהליכים לפי שם התהליך עם PSKill

כשכבר אתה יודע איך למצוא תהליכים רחוקים, בוא נתחיל כעת ללמוד איך להורוג אותם. לאתחל, נכסה את הכלי pskill . למד תחילה כיצד להורוג תהליכים לפי שם התהליך.

1. וודא שיש לך תהליך שאתה יכול להורג בשרת המרוחק שלך. במדריך זה, נשתמש בתהליך של notepad.

2. פתח חלון של PowerShell או אופן פעולה בפקודת שורה בשולחן העבודה המקומי שלך ושנה את התיקייה לאן שחילצת את ה-Sysinternal Suite והפעל את הפקודה הבאה. תוכל לראות שהתחברות עם 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. על השרת המרוחק שלך, פתח Notepad פעמיים; תהרוג אחד מתהליכים אלו בהדגמה זו; כמובן שתוכל להחליף תהליכים אחרים.

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

הרג של תהליכים רחוקים באמצעות TaskKill לפי שם

הכלי taskkill מובנה ב-Windows וכולל אפשרויות נוספות בשורת פקודה לאחזור תהליכים על ידי שם משתמש ושם אפליקציה. בואו נתחיל ונהרוג שוב את Notepad!

הורג על ידי שם

1. על השרת המרוחק שלך, פתח את Notepad; Notepad הוא התהליך שתהוגן במחזור דגם זה; בהחלט תוכל להחליף תהליך אחר.

2. פתח חלון פושרשל או פקודת פקודה בשולחן העבודה שלך. לקליקה על הפקודה הבאה תהרוג את 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

הורג של תהליכים רחוקים באמצעות TaskKill לפי PID

ההורג של תהליך עם taskkill באמצעות PID אינו שונה הרבה משימוש בשם התהליך. אך, מכיוון שאין באפשרותך להשתמש בשם, תצטרך תחילה למצוא את ה-PID ולאחר מכן להעביר אותו ל-taskkill.

בהנחה שיש לך את Notepad רץ במחשב Windows המרוחק שלך:

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 מספק לך מספר אפשרויות להרוג תהליכים מרוחקים; ה־cmdlet הראשון Stop-Process אינו יכול להרוג תהליך מרוחק באופן טבעי, מכיוון שאין לו אפשרות לציין שם מחשב. אך, ניתן לעקוף את הבעיה זו על ידי הרצת Stop-Process מרחוק באמצעות פקודות רימוט של PowerShell.

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 שולחת את הפקודה לשרת רחוק.

סיום

למדת על שיטות שונות להרוג תהליכים מרחוק וכיצד להתמודד עם מצבים בהם כללי הגנה ברשת עשויים למנוע את פעולתם של כלי העזר; מדריך זה עשוי גם לעזור לך לתקן בעיות בחלונות.

הכלים שלמדת עליהם הם כלים עזים; השתמש בהם בזהירות!

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