Monitor-CriticalServices
Synopsis
Monitors critical Windows services and automatically restarts them if they stop.
Description
This script continuously monitors a configurable list of critical services and automatically restarts them if they are found to be stopped. It includes:
- Service status monitoring
- Automatic restart with retry logic
- Dependency chain management
- Email notifications (optional)
- Comprehensive logging
- Health check reporting
Syntax
.\Monitor-CriticalServices.ps1 [[-ConfigPath] <String>] [[-CheckInterval] <Int32>] [[-MaxRetries] <Int32>] [-EmailNotifications] [-ReportOnly] [<CommonParameters>]
Parameters
-ConfigPath
Path to JSON configuration file containing service definitions.
Type | Required | Position | Default value |
---|---|---|---|
String | false | 1 | none |
-CheckInterval
Interval in seconds between service checks.
Type | Required | Position | Default value |
---|---|---|---|
Int32 | false | 2 | 300 |
-MaxRetries
Maximum number of restart attempts per service.
Type | Required | Position | Default value |
---|---|---|---|
Int32 | false | 3 | 3 |
-EmailNotifications
Enable email notifications for service failures.
Type | Required | Position | Default value |
---|---|---|---|
SwitchParameter | false | named | False |
-ReportOnly
Run in report-only mode without performing any restart actions.
Type | Required | Position | Default value |
---|---|---|---|
SwitchParameter | false | named | False |
Examples
Example 1: Default monitoring
PS C:\> .\Monitor-CriticalServices.ps1
Runs with default settings and built-in service list.
Example 2: Custom configuration
PS C:\> .\Monitor-CriticalServices.ps1 -ConfigPath ".\service-config.json" -CheckInterval 180
Uses custom configuration and checks every 3 minutes.
Notes
- Author: PowerShell Automation Project
- Requires: Administrator privileges to restart services