जवाबों:
पोस्टर यह सुनिश्चित करना चाहता है कि सेवा को पुनः आरंभ करने से पहले रोक दिया जाए। आप कुछ इस तरह से "sc query" के आउटपुट पर एक लूप का उपयोग कर सकते हैं:
:stop
sc stop myservice
rem cause a ~10 second sleep before checking the service state
ping 127.0.0.1 -n 10 -w 1000 > nul
sc query myservice | find /I "STATE" | find "STOPPED"
if errorlevel 1 goto :stop
goto :start
:start
net start | find /i "My Service">nul && goto :start
sc start myservice
यदि यह पूरी तरह से सेवा को पुनरारंभ करने के लिए है, तो आप उपयोग कर सकते हैं
Net stop myservice
Net start myservice
हालाँकि, यदि आप sc के विकल्पों तक पहुँच चाहते हैं, तो आप start / wait कमांड का उपयोग कर सकते हैं
start /B /WAIT CMD /C "sc stop myservice"
start /B /WAIT CMD /C "sc start myservice"
यह तकनीक एक अधिक सामान्य समाधान है जिसे किसी भी कमांड पर लागू किया जा सकता है।
sc stop myservice
बस स्टॉप कमांड भेजेगा और सेवा बंद होने से पहले वापस आ जाएगा। स्टार्ट / b के साथ sc को कॉल करने से मदद नहीं मिलेगी।
करवाने के लिए शांत कुछ सेवा है, जो (, सर्वर सेवा के रूप में उदाहरण के लिए) की पुष्टि पूछता रोका जा के पुनः आरंभ, आप जोड़ सकते हैं y / स्टॉप कमांड के अंत में।
net stop Server /y
net start Server
यह स्वचालित स्क्रिप्ट निष्पादन के लिए सहायक होगा।
यदि आप एक विफल सेवा को पुनरारंभ करना चाहते हैं, तो आपको स्क्रिप्ट चलाने की आवश्यकता नहीं है। सेवाओं में एमएमसी स्नैपइन एक सेवा पर राइट क्लिक करें, गुणों का चयन करें, रिकवरी टैब पर क्लिक करें। यहां आप यह निर्धारित कर सकते हैं कि आपके द्वारा की जाने वाली कार्रवाइयां सेवा बंद होनी चाहिए। वहाँ लचीलापन का एक बहुत कुछ उपलब्ध है। आपको एक स्क्रिप्ट की आवश्यकता होगी यदि y ou सेवा को रोकने की कोशिश कर रहे हैं, तो कुछ करें फिर स्क्रिप्ट शुरू करें, बैच फ़ाइल को पहले net stop "myserviceshortname"
और अंत के साथ प्रस्तुत करेंnet start "myserviceshortname"
Vbscipt में किसी सेवा और उसके 'आश्रितों' को रोकने के लिए यह थोड़ा अधिक कोड है:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery("Associators of " _
& "{Win32_Service.Name='myservice'} Where " _
& "AssocClass=Win32_DependentService " & "Role=Antecedent" )
For each objService in colServiceList
objService.StopService()
Next
Wscript.Sleep 20000
Set colServiceList = objWMIService.ExecQuery _
("Select * from Win32_Service where Name='myservice'")
For each objService in colServiceList
errReturn = objService.StopService()
Next
यहां एक सेवा शुरू की जा रही है और कुछ भी इस पर निर्भर करता है (यह परिचित होना चाहिए)
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery _
("Select * from Win32_Service where Name='Myservice'")
For each objService in colServiceList
errReturn = objService.StartService()
Next
Wscript.Sleep 20000
Set colServiceList = objWMIService.ExecQuery("Associators of " _
& "{Win32_Service.Name='myservice'} Where " _
& "AssocClass=Win32_DependentService " & "Role=Dependent" )
For each objService in colServiceList
objService.StartService()
Next