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.
Log files are produced when a service is found to not be running (updated 16/05)
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.
Checked "Run whether user is logged on or not"
Add one action per service