स्थानीय या दूरस्थ कंप्यूटर पर प्रक्रियाओं को प्रबंधित करने के लिए PowerShell में बहुत सारी सुविधाएँ हैं। पावरशेल का उपयोग करके, आप चल रही प्रक्रियाओं की एक सूची प्राप्त कर सकते हैं, एक रुकी हुई प्रक्रिया को निलंबित कर सकते हैं, एक विंडोज़ शीर्षक द्वारा एक प्रक्रिया ढूंढ सकते हैं, एक छिपी या इंटरैक्टिव मोड में एक नई प्रक्रिया चला सकते हैं, आदि।
आप Windows 10 में उपलब्ध प्रक्रिया प्रबंधन cmdlets की सूची निम्नानुसार प्रदर्शित कर सकते हैं:
Get-Command –Noun Process
- प्रक्रिया प्राप्त करें - चल रही विंडोज़ प्रक्रियाओं की सूची प्राप्त करें;
- प्रारंभ-प्रक्रिया - एक प्रक्रिया/कार्यक्रम शुरू करें;
- रोकें-प्रक्रिया - प्रक्रिया को जबरन रोकना (मारना);
- डीबग-प्रक्रिया - एक प्रक्रिया डीबग करें;
- प्रतीक्षा-प्रक्रिया - प्रक्रिया समाप्त होने तक प्रतीक्षा करें।
प्राप्त-प्रक्रिया:चल रही प्रक्रियाओं की सूची प्राप्त करना
Get-Process cmdlet स्थानीय कंप्यूटर पर चल रही प्रक्रियाओं की सूची प्रदर्शित करता है।
डिफ़ॉल्ट रूप से, चल रही प्रक्रियाओं के ये गुण प्रदर्शित होते हैं:
- हैंडल - इस प्रक्रिया द्वारा खोले गए इनपुट-आउटपुट फ़ाइल डिस्क्रिप्टर (हैंडल) की संख्या;
- एनपीएम(के) - एक नॉन-पेजेड मेमोरी (नॉन-पेजेड पूल) है। यह प्रक्रिया डेटा का आकार है (केबी में) जिसे डिस्क पर कभी भी पृष्ठांकित नहीं किया जाता है;
- प्रधानमंत्री(कश्मीर) – प्रक्रिया स्मृति का आकार जिसे पृष्ठांकित किया जा सकता है;
- WS(K) - प्रक्रिया द्वारा उपयोग की जाने वाली भौतिक मेमोरी (केबी में) का आकार (वर्किंग सेट);
- CPU(s) - प्रक्रिया द्वारा उपयोग किया जाने वाला सीपीयू समय (सभी सीपीयू पर समय गिना जाता है);
- आईडी - अद्वितीय प्रक्रिया पहचानकर्ता;
- एसआई (सत्र आईडी) - प्रक्रिया सत्र आईडी है (0 का मतलब सभी सत्रों के लिए चल रहा है, 1- पहले लॉग ऑन उपयोगकर्ता के लिए चल रहा है, 2 - दूसरे लॉग ऑन उपयोगकर्ता के लिए चल रहा है, आदि);
- प्रक्रिया का नाम
एकाधिक प्रक्रियाओं के सभी गुणों को सूचीबद्ध करने के लिए:
Get-Process cmd,excel,notep* | Format-List *
आप केवल विशिष्ट प्रक्रिया गुण प्रदर्शित कर सकते हैं, उदाहरण के लिए, एक नाम (ProcessName
), एक प्रारंभ समय (StartTime
), एक प्रक्रिया विंडो शीर्षक (MainWindowTitle
), एक निष्पादन योग्य फ़ाइल नाम (Path
) और एक डेवलपर का नाम (Company
):
Get-Process winword, notep* | Select-Object ProcessName, StartTime, MainWindowTitle, Path, Company|ft
जीयूआई के साथ चल रही उपयोगकर्ता प्रक्रियाओं की सूची प्रदर्शित करने के लिए (पृष्ठभूमि और सिस्टम प्रक्रियाएं प्रदर्शित नहीं की जाएंगी):
Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle
उपयोगकर्ता नाम शामिल करें . का उपयोग करना विकल्प, आप एक उपयोगकर्ता नाम (स्वामी) प्रदर्शित कर सकते हैं जिसने प्रक्रिया शुरू कर दी है:
Get-Process -Name winword -IncludeUserName
Where-Object
Using का उपयोग करना , आप कुछ मानदंडों के अनुसार प्रक्रियाओं का चयन कर सकते हैं। उदाहरण के लिए, आइए 300 एमबी से अधिक रैम का उपयोग करके सभी प्रक्रियाओं को प्रदर्शित करें, उन्हें स्मृति उपयोग के अनुसार अवरोही क्रम में क्रमबद्ध करें और केबी के बजाय एमबी में मेमोरी का आकार दिखाएं:
Get-Process| where-object {$_.WorkingSet -GT 300000*1024}|select processname,@{l="Used RAM(MB)"; e={$_.workingset / 1mb}} |sort "Used RAM(MB)" –Descending
जैसा कि हमने पहले बताया, CPU पैरामीटर में Get-Process cmdlet में विशिष्ट प्रक्रिया द्वारा उपयोग किया जाने वाला प्रोसेसर समय सेकंड में होता है। प्रक्रियाओं द्वारा उपयोग किए जाने वाले CPU का प्रतिशत प्रदर्शित करने के लिए (कार्य प्रबंधक के समान), इस फ़ंक्शन का उपयोग करें:
function Get-CPUUsagePercent
{
$CPUPercent = @{
Name = 'CPUPercent'
Expression = {
$TotalSec = (New-TimeSpan -Start $_.StartTime).TotalSeconds
[Math]::Round( ($_.CPU * 100 / $TotalSec), 2)
}
}
Get-Process | Select-Object -Property Name, $CPUPercent, Description | Sort-Object -Property CPUPercent -Descending | Select-Object -First 20
}
Get-CPUUsagePercent
त्रिशंकु प्रक्रियाओं को खोजने के लिए (जो प्रतिसाद नहीं दे रहे हैं), निम्न आदेश चलाएँ:
Get-Process | where-object {$_.Responding -eq $false}
प्रारंभ-प्रक्रिया, रोक-प्रक्रिया:पावरशेल के साथ प्रक्रियाओं को कैसे प्रारंभ या बंद करें
पावरशेल का उपयोग करके एक नई प्रक्रिया शुरू करने के लिए, इस कमांड का उपयोग किया जाता है:
Start-Process -FilePath notepad
अगर $env:path
. में कोई एक्ज़ीक्यूटेबल फ़ाइल नहीं है पर्यावरण चर, फ़ाइल का पूरा पथ निर्दिष्ट करें:
Start-Process -FilePath 'C:\distr\app.exe'
आप एक प्रोग्राम चला सकते हैं और उसमें तर्क दे सकते हैं:
Start-Process -FilePath ping -ArgumentList "-n 10 10.1.56.21"
विंडो शैली . का उपयोग करना विकल्प, आप प्रक्रिया विंडो प्रारंभ मोड (सामान्य, न्यूनतम, अधिकतम, छिपा हुआ) सेट कर सकते हैं। उदाहरण के लिए, किसी प्रोग्राम को अधिकतम विंडो में चलाने के लिए और प्रक्रिया समाप्त होने तक प्रतीक्षा करने के लिए, यह कमांड चलाएँ:
Start-Process -FilePath tracert -ArgumentList "10.1.56.21" –wait -windowstyle Maximized
स्टॉप-प्रोसेस cmdlet का उपयोग करके, आप किसी भी प्रक्रिया को रोक सकते हैं। उदाहरण के लिए, सभी चल रही नोटपैड प्रक्रियाओं को बंद करने के लिए:
Stop-Process -Name notepad
डिफ़ॉल्ट रूप से, आपको किसी प्रक्रिया को समाप्त करने की पुष्टि करने के लिए प्रेरित नहीं किया जाता है। निर्दिष्ट मानदंडों को पूरा करने वाली सभी प्रक्रियाओं को रोक दिया जाएगा। रोकने की प्रक्रियाओं की पुष्टि करने में सक्षम होने के लिए, –पुष्टि करें . जोड़ें विकल्प:
Stop-Process -Name notepad.exe -Confirm
साथ ही, आप एक प्रक्रिया को इस प्रकार समाप्त कर सकते हैं:
(Get-Process -Name cmd).Kill()
PowerShell से, आप उन सभी ऐप्स को बलपूर्वक रोक सकते हैं जो Windows प्रक्रिया प्रबंधक को प्रतिसाद नहीं दे रहे हैं:
Get-Process | where-object {$_.Responding -eq $false}| Stop-Process
पावरशेल का उपयोग करके दूरस्थ कंप्यूटर पर प्रक्रियाओं को प्रबंधित करें
आप ComputerName
. का उपयोग कर सकते हैं दूरस्थ कंप्यूटर पर प्रक्रियाओं को प्रबंधित करने के लिए Get-Process cmdlet का विकल्प (WinRM को सक्षम और कॉन्फ़िगर किया जाना चाहिए)।
Get-Process -ComputerName srv01, srv02, srv03| Format-Table -Property ProcessName, ID, MachineName
Invoke-Command
. में उपलब्ध पावरशेल रिमोटिंग सुविधाएं और Enter-PSSession
cmdlets यहाँ शामिल नहीं हैं। यदि आप किसी दूरस्थ कंप्यूटर पर किसी प्रक्रिया को समाप्त करना चाहते हैं, तो ध्यान दें कि स्टॉप-प्रोसेस cmdlet में –ComputerName पैरामीटर नहीं है। किसी दूरस्थ कंप्यूटर पर किसी प्रक्रिया को रोकने के लिए, आप निम्न पावरशेल कोड का उपयोग कर सकते हैं:
$RemoteProcess = Get-Process -Name cmd -ComputerName srv01
Stop-Process -InputObject $RemoteProcess