מעוניין להשתמש ב־PowerShell Get-Process cmdlet כדי להציג את התוכניות הרצות במערכת? עם Get-Process
תוכל למצוא את בעלים של התוכנית, את מספר הזהות של התוכנית, או אפילו איפה בדיסק התוכנית ממוקמת.
במאמר זה, תלמד כיצד להשתמש ב־Get-Process
cmdlet של PowerShell דרך דוגמאות ממשיות. אם להפעיל תוכניות כדי לשלוט בהן ב-Windows או Linux נשמע כמו כיף, אז המשך לקרוא!
נוגע ל: איך להרוג תוכנית ב-Linux באמצעות ps, pgrep, pkill ועוד!
דרישות מוקדמות
לפני שנמשיך, הנה הדרישות המוכרות למען הדוגמאות במאמר זה.
- אף על פי ש־Windows PowerShell 5.1 מספיק לרוב הדוגמאות כאן, PowerShell 7.1 ומעלה הוא נדרש לתמיכה ב-Linux.
נוגע ל: שדרוג ל-PowerShell 7: מדריך עקבות
- מאמר זה משתמש ב־Windows 10 ו-Ubuntu 20.04 LTS, אך כל מערכת הפעלה שבה PowerShell רץ יעבוד.
מוכן? בוא נכנס וננהל כמה תוכניות!
הצגת תהליכים רצים
Get-Process
ניהלת תוכניות מקומיות. בדוגמה הראשונה הזו, אתה משתמש ב־PowerShell Get-Process c
mdlet. פקודה זו מציגה את כל התהליכים הפעילים.
Get-Process
מחזיר צילום נקודתי של מידע על התהליכים הפעילים במערכת. כדי להציג מידע בזמן אמת על התהליכים, Windows מציעה את מanager משימות של Windows ו־Linux מציעה את הפקודה top.
כדי להתחיל, פתח את קונסולת ה־PowerShell שלך והפעל את Get-Process
. שים לב ש־Get-Process
מחזיר את מידע התהליכים הפעילים, כפי שמוצג למטה. פורמט הפלט זהה עבור מערכות ההפעלה Windows ו־Linux.

Get-Process
cmdlet on Windows to display local processes.לפי ברירת מחדל, הפקודות
gps
אוps
קיימות כשמות חיפוש ל־Get-Process
. כ־PowerShell 7 היא פלטפורמה חצי־צולבת, הפקודהps
מתקרעת עם פקודה מובנית של Linux. לכן,ps
לא יעבוד ב־Linux, רק החיפושgps
.
המשמעות של פלט Get-Process
לא תמיד יכולה להיות ברורה מיד. מאפייני Get-Process
הברירת מחדל מתוארים בפרטים נוספים למטה.
- NPM(K) – כמות הזיכרון שאינו דפוף שהתהליך משתמש בו, מוצגת בקילובייטים, כפי שמורגש בהערה
(K)
. - PM(M) – הכמות של זיכרון הניתן לדף שתהליך משתמש בו, מוצגת במגה-בייטים, כפי שמוצג על ידי הסימון
(M)
. - WS(M) – גודל הסט הפעיל של התהליך, מוצג במגה-בייטים. הסט הפעיל כולל את העמודים בזיכרון שהוזכרו לאחרונה על ידי התהליך.
- VM(M) – כמות הזיכרון הווירטואלי שהתהליך משתמש בו, מוצגת במגה-בייטים. כולל אחסון בקבצי הדף על הדיסק.
- CPU(S) – הכמות של זמן המעבד שהתהליך השתמש בו על כל התהליכים, מוצגת בשניים.
- Id – מזהה התהליך (PID) של התהליך.
- SI – זיהוי סשן של התהליך הרץ. סשן
0
מציין שהתהליך זמין לכל המשתמשים,1
מציין שהתהליך קיים תחת המשתמש הראשון שנכנס, וכן הלאה. - ProcessName – שם התהליך הרץ.
כדי להציג רשימה של כינויי מאפיינים ממופים לשמות מלאים של מאפיינים, השתמשו בפקודה
Get-Process | Get-Member -MemberType 'AliasProperty'
.
להלן דוגמה נוספת נהדרת. עבור כל הופעה של תהליך brave שהוא מוצא, הוא משתמש במזהה התהליך שלו ($_.id
) ומעביר אותו ל־Get-NetTCPConnection
. PowerShell אז משתמש ב־Get-NetTCPConnection
כדי למצוא מידע על כל חיבור רשת של תהליך brave שפתח.
הרץ את הקוד הבא בסשן של PowerShell כאשר הדפדפן Brave רץ.
תודה ל־Jay Adams מ־SystemFrontier!
מזל טוב, כעת תוכל לראות את כל התוכניות הרצות במערכות Windows ו-Linux באמצעות Get-Process
!
מציאת תכונות ספציפיות של תהליכים
Get-Process
מחזיר רבות מאוד מאפיינים שונים של תהליכים בהתאם למה שראינו קודם לכן. כמו כל אובייקט אחר ב־PowerShell, ניתן לבחור באופציה לראות רק מאפיינים מסוימים באובייקטים.
בוא נעבור על דוגמה פשוטה של איך ניתן לשלוף מאפיינים ספציפיים עבור תהליך מסוים:
- הפעל את מחשבון Windows שלך.
2. עם חלון פקודות של PowerShell פתוח, הפעל את Get-Process
באמצעות הפרמטר Name
כדי להציג רק את כל התהליכים הרצים עם Calculator כשם. תראה את הפלט שראית קודם לכן.
Get-Process
מחזיר רבות מאוד מאפיינים כפי שצפינו. אולי אתה רוצה למצוא רק את שימוש המעבד בערך מתחת לעמודה CPU(s)
. סובב את פקודת Get-Process
בסוגריים והתייחס למאפיין CPU
כמודגם למטה. תראה שהוא יחזיר רק את הערך של המאפיין CPU
.
שים לב ש־
Get-Process
מחזיר שם בשםCPU(s)
, והקטע שלעיל משתמש בשם רקCPU
. לפעמים PowerShell אינו מציג את שם המאפיין האמיתי בפלט. המושג הזה מתבצע עם קובץ העיצוב PS1XML.
זמן ה-CPU מתבטא כסך השניות על פני ליבות. כדי להביא את זה למספר שאנושי יותר, עגל אותו לעשרות הקרובות באמצעות שיטת Math
כמו שמוצג למטה.

ניתן להשתמש בגישה הנ"ל כדי למצוא כל מאפיין אחר כמו
Id
אם ברצונך לראות רק את המזהה של התהליך.
השאר את יישום המחשבון רץ. תשתמש ביישום זה לשאר הדוגמאות.
אחזור אחריות על שימוש בזיכרון התהליכים
איתור חשיבות בקרים במערכות שרצות לאט יכול להיות אתגר, וזיכרון מוגבל היא לעיתים גורם. בהמשך עם יישום המחשבון, אחזור על התהליך של Calculator
והצג רק את המאפיין VM
. כפי שמוצג למטה, הזיכרון המשתמש מוצג במגה-בייטים (MB).

Calculator
process memory usage.לעזור להבין את שימוש הזיכרון, השתמשו במכפילים המובנים של PowerShell כדי לשנות מגה-בתים (MB) לגיגה-בתים (GB). בדוגמה למטה, תמיד המרת הזיכרון המשומש ל-GB ואז השתמשו בשיטת העגלה של ספריית המתמטיקה של .NET Round
כפי שנראה בתמונת המסך למטה.
שימוש בכלים מובנים של PowerShell להמרת הערכים הופך את הפלט לקל להבנה. קראו כדי ללמוד כיצד לאתר את מזהה התהליך.

חשיפת תכונות שמעט ידועות
לא כל התכונות כלולות או מוצגות כברירת מחדל עם Get-Process
. קראו למטה כדי ללמוד עוד על התכונות Path
ו־UserName
וכיצד להשתמש בהן!
גילוי המקום שבו קובץ התהליך קיים
ישנם רבים מקומות במערכת שבהם ניתן לאחסן את הקובץ הביצועי של תהליך. אם תהליך פועל כרגע, Get-Process
מקל על איתור נתיב מערכת הקובץ של התהליך, למרות שהתכונה Path
לא מוצגת כברירת מחדל. כפי שמוצג למטה, התכונה Path
מכילה את מיקום מערכת הקבצים של קובץ הביצוע של התהליך.

Get-Process
to display a process’s full file system path on Windows.כמו ב-Windows, Get-Process
ב-Linux גם מחזיר את נתיב מערכת הקבצים. בדוגמה שלמטה, התהליך gnome-calculator
רץ עם הנתיב המוצג בפלט הקונסולה.

Get-Process
to display a process’s full file system path on Linux.מפעילים רעים עשויים לתת לתהליך את אותו השם או דומה לאחד המהימנים. לכן, היכולת לאתר את נתיב מערכת הקבצים מסייעת בתגובה לאירועי תגובת אירועי אבטחה (IR). קרא כדי לגלות איך לאתר את בעל התהליך, מאחר ו-UserName
אינו כלול בפלט ברירת המחדל.
מציאת בעל התהליך
כדי לכלול את ערך ה-UserName
בפלט, יהיה עליך להשתמש בפרמטר IncludeUserName
. חשוב לדעת את בעל התהליך, במיוחד כדי למנוע סיום של תהליך של משתמש אחר בטעות. כפי שמוצג למטה, נכלל כעת את המאפיין UserName
בפלט התהליך.

Calculator
process on Windows.לבסוף, קרא כדי ללמוד על שימוש ב-Get-Process
במחשב מרוחק כדי לקבל מידע על התהליכים!
מציאת תהליכים במחשבים מרוחקים
אף על פי שב-Windows PowerShell, Get-Process
אין לו יכולות מרוחקות בעצמו, תמיד ניתן להשתמש ב-PowerShell Remoting וב-Invoke-Command
כדי להריץ אותו על מחשבים מרוחקים.
קשור: איך להגדיר PSRemoting עם Windows ולינוקס
אך, אם אתה בלינוקס או מריץ PowerShell 6 בווינדוס, עכשיו יש לך פרמטר ComputerName
שאתה יכול להשתמש בו כדי לשאול תהליכים במחשבים מרוחקים.
הפרמטר
-ComputerName
הוסר ב- PowerShell 7.x מאחר וה- cmdlet לא קשור ישירות ל- remoting. כדי להשיג את אותו התוצאה, תוכל לארוז אותו ב-Invoke-Command
, כך:Invoke-Command -ComputerName "ComputerName" -ScriptBlock { Get-Process -ProcessName 'process' }
כאשר הפקודה לעיל מורצת נגד מחשב מרוחק, התוצאה זהה למה שהייתה מוצגת אם הייתה רצה הפקודה Get-Process
מקומית.
למטה ניתן למצוא דוגמה לרמוטינג למחשב אחר ולקבלת תהליכים שרצים:

תוכל ליעד מחשבים מרובים על ידי פרידה בפסיקים, לדוגמה:
Get-Process -ComputerName SRV1,SRV2.
שלבים הבאים
במאמר זה, למדת כיצד להשתמש ב- PowerShell Get-Process
cmdlet כדי למצוא תהליכים רצים עם PowerShell במחשבים מקומיים ומרוחקים גם בלינוקס וגם בווינדוס.
עכשיו, מה תעשה עם הידע הזה? נסה להעביר תהליך שנלקח על ידי Get-Process
ל- Stop-Process
במחשב מקומי או מרוחק כדי לסיים אותו!
Source:
https://adamtheautomator.com/powershell-get-process/