आइए जानें कि कोई विशिष्ट एप्लिकेशन या प्रक्रिया चल रही है या नहीं, यह जांचने के लिए पावरशेल का उपयोग कैसे करें; क्रैश के मामले में इसे स्वचालित रूप से कैसे पुनरारंभ करें, यदि उपयोगकर्ता ने इसे गलती से बंद कर दिया है, या यह बड़ी मात्रा में मेमोरी (मेमोरी लीक) का उपभोग करना शुरू कर देता है।
पहले हमने दिखाया था कि पावरशेल का उपयोग करके विंडोज प्रक्रियाओं को कैसे प्रबंधित किया जाता है। यह सुनिश्चित करने के लिए कि Notepad.exe प्रक्रिया चल रही है और इसे पुनः आरंभ करें, आप नीचे दी गई स्क्रिप्ट का उपयोग कर सकते हैं:/>{Invoke-Item C:\Windows\notepad.exe
}
यदि यह प्रतिक्रिया नहीं देता है (हैंग हो रहा है) या यदि यह बहुत अधिक मेमोरी (इस उदाहरण में 1000 एमबी से अधिक) का उपयोग करना शुरू कर देता है, तो आप स्वचालित रूप से एक प्रक्रिया को पुनरारंभ कर सकते हैं:
$proc =प्राप्त-प्रक्रिया -नाम नोटपैड| सॉर्ट-ऑब्जेक्ट -प्रॉपर्टी प्रोसेसनाम -अद्वितीय
अगर (($proc.Responding -eq $false) -या ($proc.WorkingSet -GT 1000000*1024)} {
$proc.Kill()
स्टार्ट-स्लीप -s 10
इनवोक-आइटम C:\Windows\notepad.exe
}
PowerShell का उपयोग के लिए
लूप, आप एक अंतहीन लूप बना सकते हैं जो एक प्रक्रिया शुरू करता है, हर 60 सेकंड में जांचता है कि क्या यह चल रहा है, और यदि आवश्यक हो तो इसे पुनरारंभ करें:
के लिए(;;){
कोशिश करें{
अगर (!(प्राप्त-प्रक्रिया -नाम नोटपैड -त्रुटि क्रिया चुपचाप जारी रखें))
{Invoke-Item C:\Windows\notepad.exe }
$proc = प्राप्त-प्रक्रिया -नाम नोटपैड | सॉर्ट-ऑब्जेक्ट -प्रॉपर्टी प्रोसेसनाम-अद्वितीय -त्रुटिक्रिया चुपचाप जारी रखें
अगर (!$proc -या ($proc.Responding -eq $false) -या ($proc.WorkingSet -GT 200000*1024)) {
$proc.Kill()
Start-Sleep -s 10
Invoke-Item C:\Windows\notepad.exe}
}
catch { }
शुरू करें -स्लीप -एस 60
}
यदि आप दूरस्थ कंप्यूटर पर किसी प्रक्रिया की स्थिति जांचना चाहते हैं, तो आप इस आदेश का उपयोग कर सकते हैं:
$proc =प्राप्त-प्रक्रिया -कंप्यूटर नाम WKS-NYC211 -नाम नोटपैड | सॉर्ट-ऑब्जेक्ट-प्रॉपर्टी प्रोसेसनाम-यूनिक-एररएक्शन चुपचाप जारी रखें
दूर से एक प्रक्रिया शुरू करने के लिए, आप Invoke-Command cmdlet का उपयोग कर सकते हैं:
आह्वान-कमांड-कंप्यूटर नाम WKS-NYC211-क्रेडेंशियल $Cred-ScriptBlock {प्रारंभ-प्रक्रिया C:\Windows\notepad.exe - प्रतीक्षा-क्रिया रनस;}
आप इस पॉवरशेल स्क्रिप्ट को उपयोगकर्ता लॉगऑन पर GPO लॉगऑन स्क्रिप्ट के रूप में चला सकते हैं।
फिर पावरशेल कोड को *.PS1 एक्सटेंशन वाली फाइल में सेव करें। आप डिजिटल हस्ताक्षर के साथ स्क्रिप्ट पर हस्ताक्षर कर सकते हैं, पावरशेल निष्पादन नीति सेटिंग बदल सकते हैं, या स्क्रिप्ट को –ExecutionPolicy Bypass
के साथ चला सकते हैं। विकल्प।
- फ़ाइल का नाम:
%windir%\System32\WindowsPowerShell\v1.0\powershell.exe
- चलने के विकल्प:
-विंडो शैली छिपी हुई-निष्पादन नीति बाईपास-नोप्रोफाइल-फ़ाइल%~dp0CheckProcess.ps1
आप टास्क शेड्यूलर का उपयोग करके शेड्यूल पर PS1 स्क्रिप्ट भी चला सकते हैं। एक ही रन विकल्पों का उपयोग करें। आप उस उपयोगकर्ता खाते को भी निर्दिष्ट कर सकते हैं जिसे आप इस प्रक्रिया को चलाना चाहते हैं।
$Action =नया-ScheduledTaskAction - "PowerShell.exe" निष्पादित करें - तर्क "-विंडोस्टाइल छुपा हुआ - निष्पादन नीति बाईपास - फ़ाइल %windir%\CheckProcess.ps1"
$Trigger=New-ScheduledTaskTrigger -AtLogon
$Principal=New-ScheduledTaskPrincipal -UserId "jsmith" -LogonType Interactive
$Task=New-ScheduledTask -Action $Action -Trigger $Trigger -Principal $Principal
Register-ScheduledTask -TaskName "चेक नोटपैड प्रक्रिया "-InputObject $Task
या आप इस PowerShell स्क्रिप्ट को Windows सेवा के रूप में चला सकते हैं।
यदि चल रहे ऐप को किसी उपयोगकर्ता के साथ बातचीत करने की आवश्यकता नहीं है, तो इसे सेवा के रूप में चलाना बेहतर है। बाद में, आप इसे मानकservices.msc
. के माध्यम से प्रबंधित करने में सक्षम होंगे कंसोल या पावरशेल के साथ। विंडोज़ में सेवाओं को फिर से शुरू करने के लिए एक अंतर्निहित सुविधा है, या आप निम्नानुसार हैंग अप सेवा को पुनरारंभ कर सकते हैं।