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