Eu tenho um script em lote que se parece com:
sc stop myservice
sc start myservice
ocorre um erro porque o sc não espera até que o serviço seja interrompido. Como reinicio um serviço com um script?
Eu tenho um script em lote que se parece com:
sc stop myservice
sc start myservice
ocorre um erro porque o sc não espera até que o serviço seja interrompido. Como reinicio um serviço com um script?
O autor deseja garantir que o serviço seja interrompido antes de tentar reiniciá-lo. Você pode usar um loop na saída de "sc query" fazendo algo assim:
Pode estar faltando alguma coisa, mas eu uso isso o tempo todo:
ou mais curto:
Simples morto com powershell:
Melhor ainda, usando nomes de exibição:
Get-Help Restart-Service
para maisSe for puramente para reiniciar o serviço, você pode usar
No entanto, se você quiser acessar as opções de sc, você pode usar o comando start /wait
esta técnica é uma solução mais geral que pode ser aplicada a qualquer comando.
Para ter uma reinicialização silenciosa de algum serviço, que pede confirmações para ser interrompido (como serviço do servidor, por exemplo), você pode adicionar /y ao fim do comando stop.
Seria útil para a execução automática de scripts.
Se você deseja reiniciar um serviço com falha, não precisa executar um script. No snap-in de serviços do MMC, clique com o botão direito do mouse em um serviço, selecione propriedades, clique na guia de recuperação. Aqui você pode definir quais ações deseja realizar caso o serviço seja interrompido. Há muita flexibilidade disponível. Você precisará de um script se estiver tentando parar o serviço, faça algo e inicie o script, prefacie o arquivo em lote com
net stop "myserviceshortname"
e termine comnet start "myserviceshortname"
Em vbscipt é um pouco mais de código para parar um serviço e seus 'dependentes:
Aqui está iniciando um serviço e tudo o que depende (isso deve ser familiar)
Você pode usar os seguintes comandos:
Eu fiz um híbrido: no arquivo *.cmd: