Following a system restart, an overnight shutdown or a system update, some Windows services don’t always come up successfully. This script runs via Windows Task Scheduler and accepts one or more service names.

If the service isn’t running, it attempts to start it – and produces a log file to capture the incident.
The script is available on GitHub; the version at time of writing is here:
@Echo Off
:: ServiceCheck.bat
:: Accepts a service name, if it's running, exits. If it's not running, attempts to start it and creates a log file.
:: Uplift to check and retry?
Set ServiceName=%~1
::Set ServiceName=QlikSenseProxyService
:: Get date in yyyyMMdd_HHmm format to use with file name.
FOR /f "usebackq" %%i IN (`PowerShell ^(Get-Date^).ToString^('yyyy-MM-dd'^)`) DO SET LogDate=%%i
SC queryex "%ServiceName%"|Find "STATE"|Find /v "RUNNING">Nul&&(
echo %ServiceName% not running
echo Start %ServiceName%
Net start "%ServiceName%">nul||(
Echo "%ServiceName%" wont start
exit /b 1
)
echo "%ServiceName%" started
:: Now log out to a file so we have some sort of history
echo ### Service [%ServiceName%] not running on %LogDate% & echo %Time% Attempting to start service.>>"%~dp0ServiceCheck_%ServiceName%_%LogDate%.log"
exit /b 0
)||(
:: All OK, let's just write to console and exit
echo "%ServiceName%" working
exit /b 0
)
Configure the task (this example checks two Qlik Sense services) to accept one or more actions.

