-
Notifications
You must be signed in to change notification settings - Fork 0
/
Check-Services.ps1
43 lines (36 loc) · 2.03 KB
/
Check-Services.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#Requires -Version 4
Function Check-Services { #Beginning of Function
[CmdletBinding()]
param(
[Parameter(Mandatory)]
[string]$SMTPServer,
[Parameter(Mandatory)]
[string]$FromEmailAddress,
[Parameter(Mandatory)]
[string]$ToEmailAddress
)
try { # looking for stopped services
$stoppedServices = Get-Service | Where-Object {
($_.Status -eq "Stopped") -and ($_.StartType -eq "Automatic")
}
if ($stoppedServices) {
$BetterViewStoppedServices = ($stoppedServices | Format-Table -AutoSize | Out-String) # Make results of Get-Service beaitufl for email messsage
$body = @"
The following services are not running:
$BetterViewStoppedServices
Please, check $hostname server immediately!
"@ # Place results of Get-Service in multiline for email message
Send-MailMessage -From $FromEmailAddress -To $ToEmailAddress -Subject "Alert: Stopped Automatic Services on $hostname server" -Body $body -SmtpServer $SMTPServer
}
}
catch {
Write-Error "An unexpected error occurred: $($_.Exception.Message)" # Throw error message in case of unexpected error
}
} #End of function
# Variables
$SMTPServer = "smtp.freesmtpservers.com" # I used a testing SMTP for testing purposes. You can also test
$FromEmailAddress = "alerts@test.com"
$ToEmailAddress = "test@test.com"
$hostname = hostname #To make subject of email message more personalized and useful
Check-Services -SMTPServer $SMTPServer -FromEmailAddress $FromEmailAddress -ToEmailAddress $ToEmailAddress
# Written by David Malko. I tried to purify my code visually, but I am not a pro developer :)