Detect-IMEHealth.ps1

<#PSScriptInfo
.VERSION 1.0
.GUID 8c2f7b1e-4d3a-4c9f-8a1d-9f3e2b7a4c55
.AUTHOR Mert Efe Kanlikilic
.DESCRIPTION A detection script that evaluates Intune Management Extension (IME) health status on Windows devices.
#>



try {
    $service = Get-Service -Name "IntuneManagementExtension" -ErrorAction Stop

    if ($service.Status -ne "Running") {
        Write-Output "IME service not running. Status: $($service.Status)"
        exit 1
    }

    $logDir = "C:\ProgramData\Microsoft\IntuneManagementExtension\Logs"

    if (-not (Test-Path $logDir)) {
        Write-Output "IME log directory missing"
        exit 1
    }

    # En son yazılan logu bul
    $latestLog = Get-ChildItem $logDir -Filter *.log |
                 Sort-Object LastWriteTime -Descending |
                 Select-Object -First 1

    if (-not $latestLog) {
        Write-Output "No IME logs found"
        exit 1
    }

    $lastWrite = $latestLog.LastWriteTime

    # Threshold biraz genişlet
    if ($lastWrite -lt (Get-Date).AddHours(-2)) {
        Write-Output "IME logs stale (last write: $lastWrite)"
        exit 1
    }

    Write-Output "IME healthy"
    exit 0
}
catch {
    Write-Output "Detection error: $_"
    exit 1
}