مهتم ب استخدام cmdlet PowerShell Get-Process لعرض عمليات تشغيل النظام؟ مع Get-Process
يمكنك العثور على مالك العملية، وهوية العملية، أو حتى موقع العملية على القرص.
في هذا المقال، ستتعلم كيفية استخدام cmdlet Get-Process
في PowerShell من خلال أمثلة من الحياة الواقعية. إذا كان التلاعب بالعمليات لثنيها على إرادتك على نظام التشغيل Windows أو Linux يبدو ممتعًا، فما عليك سوى الاستمرار في القراءة!
ذات صلة: كيفية إنهاء عملية في Linux باستخدام ps، pgrep، pkill وغيرها!
المتطلبات المسبقة
قبل المتابعة، فيما يلي المتطلبات المسبقة الضرورية لمتابعة الأمثلة في هذا المقال.
- على الرغم من أن PowerShell 5.1 لنظام التشغيل Windows يكفي لمعظم الأمثلة هنا، إلا أنه من الضروري الحصول على PowerShell 7.1 والأحدث لدعم Linux.
ذات صلة: الترقية إلى PowerShell 7: دليل تعليمي
- يستخدم هذا المقال نظام التشغيل Windows 10 و Ubuntu 20.04 LTS، ولكن أي نظام تشغيل يعمل عليه PowerShell سيعمل.
هل أنت جاهز؟ لنقم بإدارة بعض العمليات!
عرض عمليات التشغيل
Get-Process
يدير العمليات المحلية. في هذا المثال الأول، تستخدم أمر PowerShell Get-Process c
mdlet. يعرض هذا الأمر جميع العمليات الجارية.
Get-Process
يعيد لقطة في وقت معين من معلومات تشغيل العملية في النظام. لعرض معلومات العملية في الوقت الحقيقي، يقدم نظام 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) – كمية وقت المعالجة التي استخدمتها العملية على جميع العمليات، معروضة بالثواني.
- المعرف – معرف العملية (PID) للعملية.
- SI – معرف الجلسة للعملية الجارية. الجلسة
0
تشير إلى أن العملية متاحة لجميع المستخدمين،1
تشير إلى أن العملية موجودة تحت المستخدم الأول المسجل الذي يستخدم الجهاز، وهكذا. - اسم العملية – اسم العملية الجارية.
لعرض قائمة من الأوامر البديلة المرتبطة بأسماء الخاصيات الكاملة، استخدم الأمر
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.
يتم التعبير عن وقت وحدة المعالجة المركزية كمجموع للثواني عبر النوى. للحصول على رقم يمكن قراءته بشكل أفضل من قبل الإنسان، قم بتقريبه إلى العشرة الأقرب باستخدام طريقة Math
كما هو موضح أدناه.

يمكنك استخدام الطريقة أعلاه للعثور على خصائص أخرى مثل
Id
إذا كنت ترغب في رؤية فقط هوية العملية.
اترك تطبيق Calculator مفتوحًا. ستستخدم هذا التطبيق لبقية الأمثلة.
استرجاع استخدام ذاكرة العملية
قد يكون تحديًا حل مشكلات أنظمة التشغيل البطيء، حيث يكون الذاكرة المقيدة في كثير من الأحيان سببًا. واستمرارًا في تطبيق Calculator، استرجع عملية 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
على جهاز كمبيوتر بعيد لاسترجاع معلومات العملية!
البحث عن العمليات على أجهزة الكمبيوتر البعيدة
على الرغم من أن أمر Get-Process
في PowerShell لنظام التشغيل Windows لا يحتوي على إمكانيات بعيدة في حد ذاته، يمكنك دائمًا الاعتماد على PowerShell Remoting و Invoke-Command
لتشغيله على أجهزة الكمبيوتر البعيدة.
ذات الصلة: كيفية إعداد PSRemoting مع Windows و Linux
لكن، إذا كنت تستخدم نظام Linux أو تعمل بنظام PowerShell 6 على نظام Windows، فلديك الآن معلمة ComputerName
يمكنك استخدامها لاستعلام العمليات على أجهزة الكمبيوتر عن بعد.
تمت إزالة المعلمة
-ComputerName
في PowerShell 7.x حيث أن الأمر ليس متعلقًا مباشرة بالتحكم عن بعد. لتحقيق نفس الغرض، يمكنك تغليف الأمر نفسه فيInvoke-Command
، كما فيما يلي:Invoke-Command -ComputerName "اسم الكمبيوتر" -ScriptBlock { Get-Process -ProcessName 'العملية' }
عند تشغيل الأمر أعلاه ضد كمبيوتر بعيد، يتم عرض نفس الناتج كما لو تم تشغيل أمر Get-Process
محليًا.
أدناه مثال على التحكم عن بعد إلى كمبيوتر آخر والحصول على العمليات التي تعمل:

يمكنك استهداف عدة أجهزة كمبيوتر عن طريق فصلها بفاصلة مثل
Get-Process -ComputerName SRV1,SRV2.
الخطوات التالية
في هذه المقالة، تعلمت كيفية استخدام أمر PowerShell Get-Process
للعثور على العمليات التي تعمل باستخدام PowerShell على أجهزة الكمبيوتر المحلية والبعيدة سواء كانت Linux أو Windows.
الآن، ماذا ستفعل بهذه المعرفة؟ جرب تمرير عملية يتم استردادها بواسطة Get-Process
إلى Stop-Process
على جهاز كمبيوتر محلي أو بعيد لإنهاءها!
Source:
https://adamtheautomator.com/powershell-get-process/