O comando sc
permite que você consulte um serviço do Windows. Os detalhes completos podem ser encontrados aqui .
Para que você possa consultar um serviço específico, se ele existir, você receberá detalhes como:
sc query lanmanserver
resulta em
SERVICE_NAME: lanmanserver
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 4 RUNNING
(STOPPABLE,PAUSABLE,ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
Consultar um serviço que não existe resulta em:
[SC] EnumQueryServicesStatus:OpenService FAILED 1060:
The specified service does not exist as an installed service.
Assim, você pode escrever um script para verificar a resposta e, em seguida, executar qualquer ação que você deseja com base nisso.
Se você não estiver preso ao usar scripts em lote, também poderá escrever algo muito melhor no Powershell, como
function serviceCheck ($service, $machine) {
$result = [System.ServiceProcess.ServiceController]::GetServices($machine) | where{ (($_.name -eq $service) -or ($_.displayname -eq $service))
}
if (result -eq $null)
{
Do something if service does not exist
}
else
{
Do something if service does exist
}
}