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?

  • Un avvio di servizio di sistema locale viene modificato in variables di ambiente in Windows 2008 R2 senza un riavvio?
  • Errore durante l'installazione di un servizio Windows .NET con InstallUtil
  • Dover eseguire IISRESET due volte per avviare tutti i servizi correlati a IIS
  • Come posso fare Windows Server avviare il mio servizio Apache dopo il servizio IIS?
  • tomcat 6 modalità di avvio per la produzione
  • Distribuzione di C # Windows Service in più server
  • Windows Service >> 'Accedi come' non carica il profilo dell'utente?
  • Visualizzare lo stato di un servizio Windows dal prompt dei comandi
  • 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.