Ben benzeyen bir toplu iş komut dosyası var:
sc stop myservice
sc start myservice
sc, hizmet durduruluncaya kadar beklemediği için hata veriyor. Bir hizmeti komut dosyasıyla nasıl yeniden başlatırım?
Poster, hizmeti yeniden başlatmaya çalışmadan önce durdurulduğundan emin olmak istiyor. Bunun gibi bir şey yaparak "sc sorgusu" çı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
Bir şey eksik olabilir, ama bunu her zaman kullanıyorum:
net durdurma "myservice"
net başlangıç "myservice"
veya daha kısa:
net stop "myservice" && net başlangıç "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
Yalnızca hizmeti yeniden başlatmak içinse,
Net stop myservice
Net start myservice
Ancak, sc seçeneklerine erişmek istiyorsanız, başlat/bekle komutunu kullanabilirsiniz
start /B /WAIT CMD /C "sc stop myservice"
start /B /WAIT CMD /C "sc start myservice"
bu teknik, herhangi bir komuta uygulanabilen daha genel bir çözümdür.
quiet hizmetinin yeniden başlatılmasını sağlamak için, onayların durdurulmasını ister (örneğin, Sunucu hizmeti olarak), stop komutunun sonuna / y ekleyebilirsiniz.
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ız gerekmez. Services MMC bir hizmete snapin sağ tıklayın, özellikleri seçin, kurtarma sekmesine tıklayın .. Burada servis durursa hangi eylemlerin yapılmasını istediğinizi ayarlayabilirsiniz. hizmeti durdurmaya çalışıyorsanız, bir şeyler yapın, ardından komut dosyasını başlatın, toplu iş dosyasını net stop "myserviceshortname"
ile önceden girin ve net start "myserviceshortname"
Vbscipt'te bir hizmeti ve bağımlılarını durdurmak için biraz daha kod var:
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 hizmete ve bağlı olduğu her şeye başlıyor (bu tanıdık 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
Aşağıdaki komutları kullanabilirsiniz:
@echo off
sc Stop <Name of Agentry Service Here>
timeout 30
sc start <Name of Agentry Service Here>