Accéder au contenu principal

Monitoring a Windows service with Powershell

Monitor Windows Service with Powershell

Description

This script is used to monitor a Windows service.

If the monitored service is not active, the script will try to restart it. 

15 seconds later, it checks its status again, if the service is still stopped, it retrieves the generated logs and sends an alert email.

Github link

Then simply place the script in a scheduled task and run it regularly.

#Function create Log folder
    Function CreateLogsFolder
{
    If(!(Test-Path C:\Logs))
    {
    New-Item -Force -Path "C:\Logs\" -ItemType Directory
}
else
{
    Write-Host "Le dossier "C:\Logs\" existe déjà !"
    }
}

#Create Log Folder
    CreateLogsFolder

#Declaration of script variables
    $Client = "ClientName"
    $Server = (Get-CimInstance -ClassName Win32_ComputerSystem).Name
    $Date = Get-Date
    $ServiceName = "XboxGipSvc"
    $LogPath = "C:\Logs\$ServiceName.log"

#Get Gervice Status Information
    $Service = Get-Service | Where-Object { $_.Name -eq $serviceName }

#Restart service and wait 15s before checking if the service restarted
If ($service.status -eq "Stopped")
{
    Start-Service $serviceName

    Write-Output "$($Date) Service Status is $($service.status)" | Tee-Object -FilePath $LogPath -Append

    Start-Sleep -Seconds 15
}

#Get Gervice Status Information
    $Service = Get-Service | Where-Object { $_.Name -eq $serviceName }

    Write-Output "$($Date) Service Status is $($service.status)" | Tee-Object -FilePath $LogPath -Append

#Send email if service still isn't running
If ($service.status -eq "Stopped")
{
    Write-Output "$($Date) Sending Alert email..." | Tee-Object -FilePath $LogPath -Append
   
    $smtpServer = "SmtpServer"
    $msg = new-object Net.Mail.MailMessage
    $smtp = new-object Net.Mail.SmtpClient($smtpServer
    $msg.From = "noreply@domainname.extension"
    $msg.To.Add("user@domainname.extension")
    #$msg.CC.Add("username@domainname.extension")
    $msg.Attachments.Add("$LogPath")
    $msg.subject = $Client + " $Server"  + " Service " + $serviceName + " is " + $service.status
    $msg.body = ([string]$date) + " Service " + $serviceName + " is " + $service.status
    $smtp.send($msg)
}
    Write-Host "$($Date) Sending Alert email OK"


Result

Example of email received



Commentaires

Posts les plus consultés de ce blog

Send email alert if Reboot or shutdown a Server with Powershell

Présentation This script allows to send a status mail when a server restarts or stops. All actions are logged to C:\Logs. Github Link :  https://github.com/ChrisMogis/Scripts/blob/main/Alert_State_Server.ps1 Exécution command line for reboot status :  powershell.exe -executionpolicy ByPass -file .\ScriptName.ps1 -Option Reboot Exécution command line for shutdown status :  powershell.exe -executionpolicy ByPass -file .\ScriptName.ps1 -Option Shutdown #Script Parameters Param ( [Parameter(Mandatory= $true )] [ValidateSet( "Reboot" , "Shutdown" )] [String[]] $Option ) #Function create Log folder     Function CreateLogsFolder {     If (!( Test-Path C:\Logs))     {     New-Item -Force -Path "C:\Logs\" -ItemType Directory } else {     Write-Host "The folder " C:\Logs\ " already exists !"     } } #Create Log Folder     CreateLogsFolder #Declaration of script variables     $Client = "Client Name"     $Server = (Get

SCCM - Erreur 0x87D00664 lors de l'installation de la mise à jour de Juin 2020

Lors de l'installation de la KB4561616 sur des systèmes serveurs via SCCM, vous pouvez vous heurter à l'erreur  0x87D00664 . Celle-ci correspond au délai fixé pour l'installation de la mise à jour qui est dépassé sur des machines à faibles performances : Pour corriger le problème, il suffit simplement d'aller dans : Allez dans "Software Library" Puis "Software Updates" Chercher la mise à jour concernée Clic droit , puis "Propriétés" de la mise à jour Changer la valeur "Maximum run time" Validez en appuyant sur "Apply"  Relancez ensuite l'installation de la mise à jour.

Edge Chromium - Les ADMX sont disponibles

Microsoft a récemment publié les fichiers ADMX pour faciliter la gestion de son navigateur Edge basé sur Chromium. Pour les récupérer, il suffit de se rendre sur la page suivante : https://www.microsoft.com/en-us/edge/business/download Ensuite, il suffit de sélectionner la version du navigateur publié, l'architecture système et cliquer sur  "GET POLICY FILES" Il suffira ensuite d'extraire le contenu du fichier .CAB et de placer les fichiers dans le dossier SYSVOL de votre site Active Directory.