Yanıtlar:
Poster, yeniden başlatmayı denemeden önce servisin durdurulduğundan emin olmak istiyor. Böyle bir şey yaparak "sc query" çıktısında bir döngü kullanabilirsiniz:
: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
Powershell ile ölü basit:
PS >Restart-Service MySrvcHere
Daha da iyisi, görünen adları kullanarak:
PS >Restart-Service -displayname "My Service Name Here"
Get-Help Restart-Service
daha fazlası için
Tamamen servisi yeniden başlatmak içinse,
Net stop myservice
Net start myservice
Bununla birlikte, sc seçeneklerine erişmek istiyorsanız, start / wait komutunu kullanabilirsiniz.
start /B /WAIT CMD /C "sc stop myservice"
start /B /WAIT CMD /C "sc start myservice"
Bu teknik, herhangi bir komuta uygulanabilecek daha genel bir çözümdür.
sc stop myservice
sadece stop komutunu gönderir ve servis durdurulmadan önce geri döner. Sc / b ile sc çağırmak işe yaramaz.
Sahip olmak sessiz (örneğin, sunucu hizmeti gibi) durdurulması teyitleri sorar bazı hizmetin yeniden başlatma, Sen ekleyebilir / y durdurma komutunun sonuna.
net stop Server /y
net start Server
Otomatik komut dosyası yürütme için yararlı olacaktır.
Başarısız bir hizmeti yeniden başlatmak istiyorsanız, bir komut dosyası çalıştırmanıza gerek yoktur. Hizmetler MMC ek bileşeninde bir hizmeti sağ tıklatın, özellikleri seçin, kurtarma sekmesini tıklayın. Servisin durması durumunda hangi işlemlerin yapılacağını ayarlayabilirsiniz. Bir sürü esneklik var. Hizmeti durdurmaya çalışıyorsanız, bir şey yapıp ardından betiği başlatmalı, toplu iş dosyasını önceden başlatmalı net stop "myserviceshortname"
ve bitmelinet start "myserviceshortname"
Vbscipt'de bir hizmeti durdurmak için biraz daha kod var ve 'bağımlıları:
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
İşte bir servisi başlatmak ve bağlı olduğu her şeyi yapmak (bu aşina olmalı)
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