Existe um bug nesse código devido a natureza assíncrona do comando sc, onde o sc stop faz a requisição para a mudança do estado e retorna imediatamente como bem-sucedido ainda com o estado transitório intermediário STOP_PENDING, o que leva a falha da próxima instrução com o comando com o sc start em cima de um serviço que ainda está em execução.
Para melhor ilustração desse cenário seria necessário utilizar o comando mais antigo net que possui natureza síncrona, uma vez que após a requisição de transição de estado verifica periodicamente durante 30s se houve a transição até o estado final esperado, se não retorna como erro.
Para a consulta deve-se manter o uso do sc, pois o net não possui essas funções.