Hallo Zusammen,
ich versuche ein Skript zu schreiben, das jede Minute überprüft, ob ein Dienst läuft. Wenn dieser nicht gestartet ist, soll eine E-Mail verschickt werden. Ich habe folgenden Skript getestet, funktioniert aber nicht 100%ig:
$servicename="PeerDistSvc" #Dienstname
$timespan = New-Object System.TimeSpan(0,1,0) #Stunden,Minuten,Sekunden
$scope = New-Object System.Management.ManagementScope("\\.\root\cimV2")
$query = New-Object System.Management.WQLEventQuery ("__InstanceModificationEvent",$timespan, "TargetInstance ISA 'Win32_service'" )
$watcher = New-Object System.Management.ManagementEventWatcher($scope,$query)
do
{
$b = $watcher.WaitForNextEvent()
$b.TargetInstance.Name
$b.TargetInstance.caption # Eigenschaftenn der WMI-Klasse: win32_service
if ($(get-service -name $servicename).status -eq "Stopped") {
start-service -name $servicename
Send-MailMessage -smtpServer server fqdn -From admin@ab.loc -To user@ab.loc -Subject 'Dienst auf Server XX-01 unerwartet beendet. Dienst wurde neugestartet' -Body "Body content"
}
}
while ($a -ne 1)Danke
edstylo