Parar / iniciar um serviço do Windows com um caminho específico?

1

Eu gostaria de criar alguns scripts (Windows Batch ou PowerShell, o que funcionar) que podem parar e iniciar serviços que tenham seu binPath em uma pasta específica. Isso acelerará as coisas ao depurar o software, já que muitas vezes preciso parar 4 serviços, modificar arquivos de configuração e, em seguida, iniciar 4 serviços novamente. Se eu pudesse ter um script que pudesse parar e iniciar esses serviços com o clique de um botão, isso realmente aceleraria meu fluxo de trabalho e também seria útil para outros usuários do software.

O software seria executado de um local como: C:\MyProgram e os 4 serviços estariam em C:\MyProgram\bin , por exemplo.

Eu gostaria que o script parasse service1.exe , service2.exe , etc. dentro do diretório bin quando eu executar meu script.

É possível usar sc stop no Windows Batch ou Stop-Service no PowerShell para passar um parâmetro binPath?

Eu dei uma olhada na documentação desses comandos, mas não consegui encontrar uma maneira de conseguir isso. Talvez eu precise fazer isso como uma seqüência de vários comandos, mas quais eu preciso eu não sei.

    
por Aaron Cunnington 27.05.2015 / 10:21

2 respostas

1

Isso não é trivial, mas você pode iterar pelo registro em HKLM \ SYSTEM \ CurrentControlSet \ Services. A chave ImagePath contém o nome do executável. Depois de encontrar isso, use o nome do serviço para controlar o serviço. Powershell tornaria isso muito fácil usando get-childitem e o caminho HKLM:\SYSTEM\CurrentControlSet\Services\

    
por 27.05.2015 / 19:36
0

Obrigado pelas sugestões, consegui trabalhar com os desenvolvedores do software para deixar para trás um rastreamento dos nomes de serviços separados por nova linha em um arquivo de texto assim que o software for instalado.

Dessa forma, posso iniciar e interromper facilmente os serviços usando alguns recursos simples do PowerShell:

$services = Get-Content("services.txt").Split()
foreach ($service in $services) {
    Start-Service $service
}

Isso é muito mais fácil do que tentar detectar os serviços.

    
por 29.05.2015 / 12:02