Come riavviare un servizio Windows da uno script?

Ho uno script batch che sembra:

sc stop myservice sc start myservice 

si fa errori perché sc non aspetta fino a quando il servizio non viene arrestato. Come riesco a riavviare un servizio con uno script?

8 Solutions collect form web for “Come riavviare un servizio Windows da uno script?”

Il poster vuole garantire che il servizio sia stato arrestato prima di tentare di riavviarlo. È ansible utilizzare un loop sull'output di "query sc" facendo qualcosa di simile:

 :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 

Può mancare qualcosa, ma lo uso per tutto il tempo:

stop netto "myservice"
start net "myservice"

o più corto:

net stop "myservice" && net start "myservice"

Morto semplice con powershell:

 PS >Restart-Service MySrvcHere 

Ancora meglio, usando i nomi dei display:

 PS >Restart-Service -displayname "My Service Name Here" 

Get-Help Restart-Service per ulteriori informazioni

Se è puramente per riavviare il servizio, è ansible utilizzare

 Net stop myservice Net start myservice 

Tuttavia, se si desidera accedere alle opzioni di sc, è ansible utilizzare il command di avvio / attesa

 start /B /WAIT CMD /C "sc stop myservice" start /B /WAIT CMD /C "sc start myservice" 

questa tecnica è una soluzione più generale che può essere applicata a qualsiasi command.

Per avere nuovamente il riavvio di un servizio che richiede la conferma delle conferme (ad esempio, come servizio del server), è ansible aggiungere / y alla fine del command stop.

 net stop Server /y net start Server 

Sarebbe utile per l'esecuzione automatica di script.

Se si desidera riavviare un servizio non riuscito, non è necessario eseguire uno script. Nei servizi MMC snapin fare clic con il button destro del mouse su un servizio, select le properties;, fare clic sulla scheda di ripristino. Qui è ansible impostare le azioni da intraprendere se il servizio si arresta. C'è molta flessibilità disponibile. Avnetworking bisogno di uno script se y ou sta tentando di interrompere il servizio, fare qualcosa quindi avviare lo script, predicare il file batch con net stop "myserviceshortname" e terminare con net start "myserviceshortname"

In vbscipt è un po 'più codice per arrestare un servizio e le sue dependencies:

 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 

Ecco che inizia un servizio e tutto ciò dipende (questo dovrebbe essere familiare)

 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 

È ansible utilizzare i seguenti comandi:

 @echo off sc Stop <Name of Agentry Service Here> timeout 30 sc start <Name of Agentry Service Here> 

Se si desidera interrompere il servizio nella macchina remota, seguire l'istruzione

Passaggio 1: accedere alla macchina remota con credenziali di conoscenza come amministratore

Passo 2: Aprire il prompt dei comandi nel computer

Passaggio 3: sc \ Remote_Machine_IPAddress arresto "Nome servizio"

Auguri

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.