Olá Estudante, tudo bem com você?
Peço desculpas pela demora em obter um retorno.
O erro, Exception calling "Start" with "0" argument(s)
, está sendo apresentado devido ao tempo de execução do script está ocorrendo antes da efetiva parada do serviço, fazendo com que ocorra a tentativa de inicialização de um serviço antes mesmo de o mesmo mudar para o status Stopped
gerando erro.
Uma forma de contornar este erro será utilizarmos o método WaitForStatus
que permite definir um ponto de espera no script até que o serviço tenha o status que foi definido no método, no nosso caso esperaremos o status Stopped
. Adicionaremos este método dentro da estrutura da condicional if
, ficando como apresentado abaixo:
$servico = Get-Service -Name "AudioSRV"
if ($servico.Status -eq "Running") {
$servico.Stop()
$servico.WaitForStatus("Stopped")
echo "Serviço finalizado"
$servico.Start()
echo "Serviço iniciado"
} else {
echo "Serviço não estava executando!"
}
Dessa forma, o comando $servico.Start()
será chamado apenas quando o status do serviço mudar efetivamente para Stopped
, como apresentado no GIF abaixo:
Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.
Em caso de dúvidas estou à disposição.
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!