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