आप विंडोज़ सेवाओं का प्रबंधन न केवल services.msc स्नैप-इन या sc.exe कमांड लाइन टूल से कर सकते हैं, बल्कि पावरशेल का उपयोग करके भी कर सकते हैं। इस लेख में हम पावरशेल के साथ विंडोज सेवाओं के प्रबंधन के विभिन्न परिदृश्यों पर विचार करेंगे।
Windows सेवाओं को प्रबंधित करने के लिए प्रयुक्त PowerShell Cmdlets
विंडोज सेवाओं की स्थिति देखने और उन्हें प्रबंधित करने के लिए आठ बुनियादी सेवा cmdlets हैं। सेवा प्रबंधन cmdlets की पूरी सूची प्राप्त करने के लिए, यह आदेश चलाएँ:
Get-Help \*-Service
<मजबूत>
- सेवा प्राप्त करें — स्थानीय या दूरस्थ कंप्यूटर पर सेवाओं को चालू या बंद दोनों अवस्था में प्राप्त करने की अनुमति देता है;
- नई-सेवा - एक सेवा बनाता है। cmdlet रजिस्ट्री और सेवा डेटाबेस में Windows सेवा के लिए एक नई प्रविष्टि बनाता है;
- पुनरारंभ-सेवा - एक सेवा को पुनरारंभ करता है। cmdlet Windows सेवा नियंत्रक के माध्यम से पुनरारंभ संदेश भेजता है;
- फिर से शुरू-सेवा - एक सेवा फिर से शुरू। cmdlet Windows सेवा प्रबंधक को एक फिर से शुरू संदेश भेजता है;
- सेट-सेवा — किसी स्थानीय या दूरस्थ सेवा की सेटिंग्स को बदलता है, जिसमें उसकी स्थिति, विवरण, प्रदर्शित नाम या स्टार्टअप मोड शामिल है। आप इस cmdlet का उपयोग किसी सेवा को शुरू करने, रोकने या निलंबित करने के लिए भी कर सकते हैं;
- सेवा प्रारंभ करें - एक सेवा शुरू करता है;
- सेवा रोकें - एक सेवा को रोकता है (cmdlet विंडोज सर्विस मैनेजर को एक स्टॉपिंग मैसेज भेजता है);
- निलंबित-सेवा - एक सेवा को निलंबित करता है। एक निलंबित सेवा अभी भी चल रही है, लेकिन यह तब तक कुछ नहीं करती है जब तक कि इसे फिर से शुरू नहीं किया जाता है (उदाहरण के लिए, रिज्यूमे-सर्विस cmdlet के साथ)।
आप Get-Help के साथ एक विशेष cmdlet का उपयोग करने का विस्तृत विवरण और उदाहरण प्राप्त कर सकते हैं:
Get-Help Start-Service
गेट-सर्विस के साथ विंडोज सर्विस स्टेटस कैसे चेक करें?
आप गेट-सर्विस का उपयोग करके स्थानीय या दूरस्थ कंप्यूटर पर सेवाओं और उनकी स्थिति (चल रहा/रोका) की सूची प्राप्त कर सकते हैं सीएमडीलेट। –नाम पैरामीटर नाम से सेवाओं का चयन करने की अनुमति देता है। सेवा का नाम वाइल्डकार्ड वर्ण *
. का उपयोग करके निर्दिष्ट किया जा सकता है ।
यदि आप सटीक सेवा नाम नहीं जानते हैं, तो आप -डिस्प्लेनाम का उपयोग करके इसके प्रदर्शित नाम से इसे ढूंढ सकते हैं पैरामीटर। आप मूल्यों और वाइल्डकार्ड की सूची का उपयोग कर सकते हैं।
सेवा प्राप्त करें . का उपयोग करें -ComputerName . के साथ cmdlet दूरस्थ कंप्यूटर पर सेवा की स्थिति प्राप्त करने के लिए पैरामीटर। आप एक साथ कई दूरस्थ कंप्यूटरों पर उनके नाम अल्पविराम से अलग करके निर्दिष्ट करके सेवा की स्थिति को क्वेरी कर सकते हैं। उदाहरण के लिए, नीचे दिखाया गया कमांड दूरस्थ कंप्यूटर ny-prnt1 और ny-prnt2 पर स्पूलर सेवा स्थिति प्राप्त करता है।
Get-Service spooler –ComputerName ny-prnt1,ny-prnt2
Status Name DisplayName ------ ---- ----------- Running spooler Print Spooler Stopped spooler Print Spooler
किसी सेवा के सभी गुण प्रदर्शित करने के लिए, चयन-वस्तु . का उपयोग करें सीएमडीलेट:
Get-Service spooler | Select-Object *
Select-Object cmdlet किसी सेवा के विशिष्ट गुण प्राप्त करने की अनुमति देता है। उदाहरण के लिए, आप स्पूलर सेवा का नाम, स्थिति और उपलब्ध विकल्प देखना चाहते हैं:
Get-Service Spooler | Select DisplayName,Status,ServiceName,Can*
. चुनें
सेवा प्राप्त करें cmdlet में दो पैरामीटर हैं जो आपको सेवा निर्भरता देखने की अनुमति देते हैं:
- -निर्भर सेवाएं दी गई सेवा पर निर्भर सेवाओं को प्रदर्शित करने की अनुमति देता है
- -आवश्यक सेवाएं उन सेवाओं को प्रदर्शित करता है जिन पर दी गई सेवा निर्भर करती है
निम्न आदेश स्पूलर सेवा शुरू करने के लिए आवश्यक सेवाओं को प्रदर्शित करता है:
Get-Service –Name Spooler -RequiredServices
निम्न आदेश स्पूलर पर निर्भर सेवाओं को दिखाता है:
Get-Service –Name Spooler -DependentServices
यदि आप विशिष्ट स्थिति या पैरामीटर वाली सेवाओं को खोजना चाहते हैं, तो कहां-वस्तु . का उपयोग करें सीएमडीलेट। उदाहरण के लिए, चल रही सेवाओं की सूची प्राप्त करें:
Get-Service | Where-Object {$_.status -eq 'running'}
मैन्युअल स्टार्टअप प्रकार के साथ सेवाओं को प्रदर्शित करने के लिए, यह आदेश चलाएँ:
Get-Service | Where-Object {$_.starttype -eq 'Manual'}
यह जाँचने के लिए कि वर्तमान कंप्यूटर पर कोई विशिष्ट Windows सेवा मौजूद है या नहीं, निम्न PowerShell स्क्रिप्ट का उपयोग करें:
if (Get-Service "ServiceTest" -ErrorAction SilentlyContinue)
{
Write-host "ServiceTest exists"
}
पावरशेल के साथ सेवा को कैसे रोकें, प्रारंभ करें या फिर से शुरू करें?
आप स्टॉप-सर्विस . का उपयोग करके किसी सेवा को रोक सकते हैं सीएमडीलेट। स्पूलर को रोकने के लिए, कमांड चलाएँ:
Stop-Service -Name spooler
स्टॉप-सर्विस cmdlet निष्पादन के बाद कुछ भी प्रदर्शित नहीं करता है। परिणाम देखने के लिए, -PassThru . का उपयोग करें पैरामीटर।
कृपया ध्यान दें कि हर सेवा को रोका नहीं जा सकता है। यदि कोई आश्रित सेवाएं हैं, तो आपको एक त्रुटि दिखाई देगी:
Cannot stop service because it has dependent services. It can only be stopped if force flag set.
किसी सेवा को रोकने के लिए बाध्य करने के लिए, –बल . का उपयोग करें पैरामीटर। आपको याद रखना चाहिए कि सभी आश्रित सेवाएं भी बंद हो जाएंगी:
Stop-Service samss –Force -Passthru
निम्न आदेश निर्दिष्ट सेवाओं (बिट्स, स्पूलर) को रोक देगा यदि वे "रनिंग" स्थिति में हैं:
get-service bits,spooler | where {$_.status -eq 'running'} | stop-service –passthru
कभी-कभी सेवाएं "स्टॉपिंग" अवस्था में लटक जाती हैं और उन्हें जबरन मारना पड़ता है।
प्रारंभ-सेवा cmdlet एक रुकी हुई सेवा शुरू करता है:
Start-Service -Name spooler -PassThru
कोई सेवा प्रारंभ नहीं होगी, यदि उसकी कोई आश्रित सेवा बंद कर दी जाती है। उन्हें खोजने और शुरू करने के लिए निम्नलिखित पॉवरशेल वन-लाइनर का उपयोग करें:
get-service samss | Foreach { start-service $_.name -passthru; start-service $_.DependentServices -passthru}
निलंबित-सेवा यदि वे इस राज्य का समर्थन करते हैं तो cmdlet सेवाओं को रोक सकता है। यह जानने के लिए कि क्या किसी सेवा को निलंबित किया जा सकता है, सेवा प्राप्त करें . का उपयोग करें CanPauseAndContinue . के साथ cmdlet संपत्ति।
Get-Service samss | Format-List name, canpauseandcontinue
रोकी जा सकने वाली सभी सेवाओं की सूची प्रदर्शित करने के लिए, यह आदेश चलाएँ:
Get-Service | Where-Object {$_.canpauseandcontinue -eq "True"}
आइए SQLBrowser सेवा को निलंबित करें:
Suspend-Service -Name SQLBrowser
किसी निलंबित सेवा को फिर से शुरू करने के लिए, फिर से शुरू-सेवा . का उपयोग करें सीएमडीलेट:
Resume-Service -Name SQLBrowser
निम्न आदेश सभी निलंबित सेवाओं को फिर से शुरू करेगा:
get-service | where-object {$_.Status -eq "Paused"} | resume-service
पुनरारंभ-सेवा cmdlet एक सेवा को पुनः आरंभ करेगा:
Restart-Service -Name spooler
यह आदेश कंप्यूटर पर सभी बंद नेटवर्क सेवाओं को प्रारंभ करता है:
get-service net* | where-object {$_.Status -eq "Stopped"} | restart-service
इन आदेशों में –ComputerName . नहीं है पैरामीटर, लेकिन आप उन्हें इनवोक-कमांड cmdlet या पाइप का उपयोग करके दूरस्थ कंप्यूटर पर चला सकते हैं।
उदाहरण के लिए, दूरस्थ कंप्यूटर ny-prnt1 पर प्रिंट स्पूलर को पुनरारंभ करने के लिए, कमांड चलाएँ:Get-Service Spooler -ComputerName ny-prnt1 | Start-Service
सेवा सेटिंग बदलने के लिए सेट-सेवा का उपयोग करना
सेट-सेवा cmdlet आपको स्थानीय या दूरस्थ कंप्यूटर पर किसी सेवा के पैरामीटर या सेटिंग्स को बदलने की अनुमति देता है। चूंकि सेवा की स्थिति एक संपत्ति है, आप इस cmdlet का उपयोग किसी सेवा को शुरू करने, रोकने या निलंबित करने के लिए कर सकते हैं। सेट-सेवा -स्टार्टअप प्रकार . है पैरामीटर जो किसी सेवा के स्टार्टअप प्रकार को बदलने की अनुमति देता है।
आइए स्पूलर स्टार्टअप प्रकार को स्वचालित में बदलें:
Set-Service spooler –startuptype automatic –passthru
आप मैन्युअल स्टार्टअप प्रकार सेट कर सकते हैं:
Set-Service spooler –startuptype manual –passthru
PowerShell के माध्यम से Windows सेवा कैसे बनाएं या हटाएं?
नई-सेवा - विंडोज़ में एक नई सेवा बनाने के लिए एक cmdlet है। नई सेवा के लिए नाम और निष्पादन योग्य फ़ाइल निर्दिष्ट करें (आप Windows सेवा के रूप में PowerShell स्क्रिप्ट भी चला सकते हैं)।
आइए TestSvc नाम से एक नई सेवा बनाएं:
new-service -name TestSvc -binaryPathName "C:\WINDOWS\System32\svchost.exe -k netsvcs"
Get-WmiObject cmdlet का उपयोग करके स्टार्टअप प्रकार और सेवा के विवरण के बारे में जानकारी प्राप्त करें।
get-wmiobject win32_service -filter "name='testservice'"
आप निम्न आदेश का उपयोग करके नई सेवा की सेटिंग बदल सकते हैं:
Set-Service -Name TestSvc -Description ‘My Service’ -StartupType Manual
किसी सेवा को हटाने के लिए, यह आदेश चलाएँ:
(Get-WmiObject win32_service -Filter ″name=′TestSvc′″).delete()
Windows सेवा चलाने वाले उपयोगकर्ता खाते को बदलें
सेवा शुरू करने के लिए उपयोग किए गए उपयोगकर्ता खाते को बदलने के लिए आप पावरशेल का उपयोग कर सकते हैं। TestSvc प्रारंभ करने के लिए उपयोग किए गए खाते का नाम प्राप्त करें:
get-wmiobject win32_service -filter "name='TestSvc'" | Select name,startname
Windows सेवा के लिए उपयोगकर्ता नाम और पासवर्ड बदलने के लिए, निम्न आदेश चलाएँ:
$svc = get-wmiobject win32_service -filter "name='TestSvc'"
$svc.GetMethodParameters("change")
परिवर्तन () विधि मापदंडों की सूची प्रदर्शित की जाती है। गणना करें कि StartName और StartPassword पैरामीटर कहां हैं:वे 20 वें . पर स्थित हैं और 21 सेंट क्रमशः स्थान।
$svc | Invoke-WmiMethod -Name Change –ArgumentList @ ($null,$null,$null,$null,$null,$null,$null, $null,$null,$null,$null,$null,$null,$null,$null,$null, $null,$null,$null,"Administrator","!123Pa$$w0rd")
या आप एक जीएमएसए खाते का नाम दर्ज कर सकते हैं (इस मामले में खाता पासवर्ड निर्दिष्ट नहीं है)।
जैसा कि आप देख सकते हैं, पावरशेल विंडोज सेवाओं को प्रबंधित करना आसान बनाता है। आप सेवाओं को बना सकते हैं, रोक सकते हैं, शुरू कर सकते हैं या फिर से शुरू कर सकते हैं और उनके गुणों को बदल सकते हैं। अधिकांश cmdlets दूरस्थ कंप्यूटर पर सेवाओं को प्रबंधित करने की अनुमति देते हैं।