Jawaban:
Poster ingin memastikan layanan dihentikan sebelum mencoba untuk memulainya kembali. Anda dapat menggunakan loop pada output "sc query" melakukan sesuatu seperti ini:
: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
Mati sederhana dengan PowerShell:
PS >Restart-Service MySrvcHere
Lebih baik lagi, menggunakan nama tampilan:
PS >Restart-Service -displayname "My Service Name Here"
Get-Help Restart-Service
untuk lebih
Jika ini murni untuk memulai kembali layanan, Anda dapat menggunakannya
Net stop myservice
Net start myservice
Namun, jika Anda ingin akses ke opsi sc, Anda dapat menggunakan perintah mulai / tunggu
start /B /WAIT CMD /C "sc stop myservice"
start /B /WAIT CMD /C "sc start myservice"
teknik ini adalah solusi yang lebih umum yang dapat diterapkan pada perintah apa pun.
sc stop myservice
hanya akan mengirim perintah berhenti dan kembali sebelum layanan dihentikan. Memanggil sc dengan start / b tidak akan membantu.
Untuk memiliki tenang restart beberapa layanan, yang meminta konfirmasi harus dihentikan (layanan Server, misalnya), Anda bisa menambahkan / y ke akhir perintah berhenti.
net stop Server /y
net start Server
Akan sangat membantu untuk eksekusi skrip otomatis.
Jika Anda ingin memulai kembali layanan yang gagal, Anda tidak perlu menjalankan skrip. Di layanan MMC snapin klik kanan pada layanan, pilih properti, klik tab pemulihan. Di sini Anda dapat mengatur tindakan apa yang ingin Anda ambil jika layanan berhenti. Ada banyak fleksibilitas yang tersedia. Anda akan memerlukan skrip jika Anda mencoba menghentikan layanan, melakukan sesuatu kemudian mulai skrip, prakata file batch dengan net stop "myserviceshortname"
dan diakhiri dengannet start "myserviceshortname"
Dalam vbscipt itu adalah kode yang lebih sedikit untuk menghentikan layanan dan tanggungannya:
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
Inilah yang memulai layanan dan apa pun itu tergantung (ini harus akrab)
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