The PowerShell Data Provider in exMon can be used to query Windows Service and make sure they are up and running. In this example, we will query the status of the MapManager within Windows. If the service is stopped for some reason, we will attempt to restart it and send a message to an IT administrator.


 Follow these steps to create the query:

  1. Create a Query in exMon Administrator
  2. Choose "PowerShell" as a Data Provider
  3. Enter the following PowerShell script
    $serviceName = '{@servicename[preview:exMon Command Service]}'
    
    $service = Get-Service -Name $serviceName | select Displayname,Status,@{label="NewStatus";expresssion={$_.Status}}
    
    if ($service.Status -ne 'Running') {
        #The service is not running. Restart and fetch new status
        Start-Service $serviceName
        $service.NewStatus = (Get-Service -Name $serviceName | select Status).Status
    
        $service
    } else {
        # return empty results
        $exMonResult = New-Object system.Data.DataTable
        $col1 = New-Object system.Data.DataColumn DisplayName,([string])
        $exMonResult.columns.add($col1)
        $col2 = New-Object system.Data.DataColumn Status,([string])
        $exMonResult.columns.add($col2)
        $col3 = New-Object system.Data.DataColumn NewStatus,([string])
        $exMonResult.columns.add($col3)
    
        $exMonResult
    
    }
  4.  Configure email settings and schedule as normally with Extra Parameters: --@servicename "SERVICE_NAME"

Example output from the test: