The idea is to use a combination of Powershell script and Task Scheduler to trigger the job every now and then.
PowerShell
Powershell is really easy to pick up. It only requires basic knowledge of Command Prompt, and the rest is just C#.
function ServiceKickstarter($serverName, $serviceName)
{
$service = Get-Service -ComputerName $serverName -Name $serviceName
if ($service.Status -eq "Stopped")
{
Write-Host $serviceName "is" $service.Status
Write-Host "Starting" $serviceName
$service.Start()
while ($service.Status -ne "Running")
{
Write-Host $serviceName "is" $service.Status
$service.Refresh()
Start-Sleep(1)
}
}
Write-Host $serviceName "is" $service.Status
}
function AllServicesKickstarter ($serverName, $servicesName)
{
$length = $servicesName.length
for ($i=0; $i -lt $length; $i++)
{
"Start " + $servicesName[$i]
startService $serverName $servicesName[$i]
}
}
$server = "<server alias>"
$service = "<service name>"
$services = "<service name>", "<another service name>", "<some other service name>"
ServiceKickstarter $server $service
#AllServicesKickstarter $server $services
NOTE: the server name is not required, if the script is to run from the target server directly.
Permission
In order to run the script, you may have to sort out execution policy as well, because the restrictions on some servers. And you will see the following message:
File … cannot be loaded. The file is not digitally signed. The script will not be executed on the system.
This has everything to do with server execution policy. You can either choose to sign the script, following the tutorial. Alternatively, change your signing policy.
The execution policy details provided by MSDN are:
Restricted - No scripts can be run. Windows PowerShell can be used only in interactive mode.
AllSigned - Only scripts signed by a trusted publisher can be run.
RemoteSigned - Downloaded scripts must be signed by a trusted publisher before they can be run.
Unrestricted - No restrictions; all Windows PowerShell scripts can be run.
Instead of using default (which allows you to run nothing), ‘RemoteSigned’ is the level that can satisfy our requirement, and manage not to piss sysadmins off.
Scheduling
The last job is to create the schedule task to make sure the script will check the target service(s). That’s just to follow Task Scheduler Wizard and you will get there eventually.