Remediate-WindowsUpdateHealth.ps1

<#PSScriptInfo
.VERSION 1.0
.GUID 2b8e4f11-3c9a-4f0d-8a77-6e1c9b4f2a33
.AUTHOR Mert Efe Kanlikilic
.DESCRIPTION A remediation script that repairs Windows Update components and resolves common update-related issues on Windows devices.
#>



Write-Output "Starting remediation"

Set-Service wuauserv -StartupType Automatic
Start-Service wuauserv -ErrorAction SilentlyContinue

$bits = Get-Service BITS
if ($bits.StartType -eq "Disabled") {
    Set-Service BITS -StartupType Manual
}

Set-Service UsoSvc -StartupType Automatic

$medic = Get-Service WaaSMedicSvc
if ($medic.StartType -eq "Disabled") {
    sc.exe config WaaSMedicSvc start= demand
}

try {
    $session = New-Object -ComObject Microsoft.Update.Session
    $searcher = $session.CreateUpdateSearcher()
    $searcher.Search("IsInstalled=0")

    Write-Output "Scan triggered via COM"
}
catch {
    Write-Output "Fallback to UsoClient"
    UsoClient StartScan
}

Write-Output "Remediation completed"
exit 0