कभी-कभी आपको किसी App या Script को चलते रहने की जरूरत होती है चाहे आप अपने Computer में Logged In हों या नहीं। शायद यह Ports Monitor करने के लिए एक PowerShell Script है या आपके Home Network पर Page Host करने वाला Web Server।
मतलब यह है कि अगर आप किसी Process, Script, या Program को तब तक चलाना चाहते हैं जब तक Computer On है, तो आपको Windows Service Create करना होगा।
Windows Service Create करने के लिए मुझे क्या चाहिए?
Windows 10 में Windows Service Create करने के लिए कुछ Prerequisites हैं:
- Computer पर Administrator Access
- Service के रूप में चलाने के लिए कुछ (PowerShell Script, Program, आदि)
- Non-Sucking Service Manager (NSSM) Installed
Non-Sucking Service Manager क्या है?
हां, आप ऐसा नाम बिना Explain किए नहीं छोड़ सकते। नाम भले ही दुर्भाग्यपूर्ण हो, लेकिन यह Accurate है। Non-Sucking Service Manager (NSSM) यकीनन एक Windows Service Create करने का सबसे आसान तरीका है जो Highly Reliable और Configurable दोनों है। साथ ही, यह Free और Open Source Software (OSS) है।
NSSM को Windows Command Prompt या Graphical User Interface (GUI) के माध्यम से Use किया जा सकता है। इसका मतलब कोई भी इसे Use कर सकता है। NSSM को Windows 2000 तक के किसी भी Version पर Use किया जा सकता है। 32-bit और 64-bit Versions उपलब्ध हैं। अगर आप 64-bit Computer Use कर रहे हैं, तो पहले उस Version को Try करें। अगर यह काम न करे, तो 32-bit Version पर वापस जाएं।
आप NSSM को Website से Download कर सकते हैं, Git से Clone कर सकते हैं, या Chocolatey से Install कर सकते हैं। Chocolatey Windows के लिए एक Package Manager है। Installation Methods इस बात पर निर्भर करेंगे कि आप कौन सा Route लेते हैं। कृपया NSSM के Instructions Consult करें। हमारे Example के लिए, हम NSSM Website से Download कर रहे हैं और इसे C:\WINDOWS\system32 में Install कर रहे हैं।
NSSM के साथ Windows Service Create करें
इस Example के लिए, हम CPU Average Load Percentage Log करने के लिए एक PowerShell Script से Service Create करेंगे।
- इस Script को Copy करके log-CPULoadPercentage.ps1 के रूप में Save करें ऐसी जगह पर जिसे कोई और Access न करे। C:/Scripts Directory Create करने की कोशिश करें और इसे वहीं Store करें। साथ ही, Scripts में Logs नाम का Folder Create करें। ध्यान दें कि Script का Path C:/Scripts/log-CPULoadPercentage.ps1 है। आपको बाद में इसकी जरूरत पड़ेगी।
Note: नीचे दी गई सभी Lines जिनके बाद # Symbol है, Comments हैं और Script को Affect नहीं करेंगी।
CLS #Optional. मैं Testing के लिए Terminal Clear करने के लिए इसे Use करना पसंद करता हूँ। #सुनिश्चित करें कि इस Script के समान Directory में Logs नाम का Folder है #Log वह जगह है जहां Records Store होंगे। Start-Transcript -Path "$PSScriptRoot\Logs\log-CPULoadPercentage-$(get-date -f yyyy-MM-dd).txt" -Append #While Loop इसे Manually Stop होने तक चलाता रहता है While ($True){ #Timestamp Create करता है यह जानने के लिए कि Measurement कब लिया गया था $timeStamp = get-date -f yyyy-MM-h:mm:ss #उस समय Average Load Percentage लेता है, फिर 5 Second Wait करके फिर से करता है। $cpuLoadPercent = Get-CimInstance win32_processor | Measure-Object -Property LoadPercentage -Average | Select-Object Average;Start-Sleep -Seconds 5 #सिर्फ Average को Isolate करता है ताकि @{Average=13} जैसा अजीब String न आए $cpuLoadPercent = $cpuLoadPercent.Average #Results को Screen पर लिखता है, या इस मामले में Log में Write-Host "$timeStamp CPU Load Percentage $cpuLoadPercent" } Stop-Transcript
- यह या तो Windows Command Prompt या PowerShell में किया जा सकता है। इसे Administrator के रूप में खोलें।
- Command nssm install logCPUAvg Enter करें और चलाएं। NSSM Service Installer Window खुल जाएगी।
- Path: Field के आगे Ellipses Button पर Click करें, powershell.exe तक Navigate करें जो Normally C:\Windows\System32\ में स्थित होता है। powershell.exe Select करें। Path: और Startup directory: Fields Automatically Populate हो जाएंगे।
- Arguments: Field में निम्न Enter करें: -ExecutionPolicy Bypass -NoProfile -File "C:\PathToScript\get-Script.ps1", जहां Last Part आपके PowerShell Script का Path और Script Name है।
- Details Tab Select करें। Display name: Field में वह Enter करें जो आप चाहते हैं कि Service Windows Services Manager में Show हो। फिर, Description: Field में वह Enter करें जो यह करता है। Startup type: को Automatic, Automatic (Delayed Start), Manual, या Disabled के रूप में Set किया जा सकता है। इस Exercise के लिए Automatic ठीक है।
- Log on Tab Select करें। This account: Radio Button Select करें और वह Account और Password Enter करें जिसके तहत Service चलेगा। आपको वह Account चुनना होगा जिसके तहत Service Run करेगा। आदर्श रूप से, आपके पास इस Service को चलाने के लिए सिर्फ एक Windows Account बना हुआ होना चाहिए। इस Account की Permissions केवल वही होनी चाहिए जो Service को करने की जरूरत है। आप Local System account चुन सकते हैं, लेकिन Security Reasons से इसकी सिफारिश नहीं की जाती।
कई अन्य Tabs हैं जिनका उपयोग Service को Customize करने के लिए किया जा सकता है। इस Exercise के लिए, उन Tabs में Default Values पर्याप्त हैं। Install service Button Select करें।
- जब Service Install हो जाए, तो आपको Service "logCPUAvg" installed successfully! Window दिखेगी। इसे बंद करने के लिए OK Select करें। इससे Installation समाप्त होता है।
- Windows Services Manager खोलें और सुनिश्चित करें कि Service वहां है।
- Service चलाएं यह सुनिश्चित करने के लिए कि यह चलेगा।
- यह Verify करने के लिए कि यह Service चल रही है, File Explorer का उपयोग करके वहां Navigate करें जहां Log Save होना चाहिए और देखें कि यह Exist करता है या नहीं।
NSSM के साथ Windows Service Remove करें
शायद अब आपको अपना CPU Load Monitor करने की जरूरत नहीं है, इसलिए आप Service से छुटकारा पाना चाहते हैं। सौभाग्य से, NSSM इसे आसान बनाता है।
- Windows Services Manager में, Service को Stop करें। ऐसा Log CPU Average Load Service Select करके और फिर Toolbar में Square Stop Button या Left Side पर Stop the service Link Select करके करें।
- या तो Windows Command Prompt या PowerShell को Administrator के रूप में खोलें।
- Command nssm remove logCPUAvg Enter करें और Execute करें।
- NSSM Confirmation मांगेगा। Yes Select करें।
- जब Service Remove हो जाए, तो आपको Service "logCPUAvg" removed successfully! Confirmation दिखेगी। OK Select करें और आपका काम हो गया।
बस इतना ही। Services Manager Check करना एक अच्छा Idea है यह सुनिश्चित करने के लिए कि Service अब वहां नहीं है। अगर आपको अभी भी Service दिखती है, तो आपको Screen Refresh करने की जरूरत हो सकती है और यह चली जाएगी।
Services उन Apps या Scripts को चलाने का एक शानदार तरीका है जिन्हें हर समय चलने की जरूरत होती है, Failure के बाद खुद Restart होने की जरूरत होती है, या Current User से अलग Privileges की जरूरत होती है। अगर आपको अपने App या Script को ये सब करने की जरूरत नहीं है, तो Scheduled Task Use करने पर विचार करें।