$ErrorActionPreference = 'SilentlyContinue' Write-Host "[1/8] WU services stoppen..." Stop-Service wuauserv -Force Stop-Service bits -Force Stop-Service cryptsvc -Force Write-Host "[2/8] WUfB registry waarden verwijderen..." $wu = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate' $au = "$wu\AU" $keys = @( 'BranchReadinessLevel', 'DeferFeatureUpdates', 'DeferFeatureUpdatesPeriodInDays', 'DeferQualityUpdates', 'DeferQualityUpdatesPeriodInDays', 'ManagePreviewBuilds', 'ManagePreviewBuildsPolicyValue', 'PauseFeatureUpdates', 'PauseFeatureUpdatesStartTime', 'PauseQualityUpdates', 'PauseQualityUpdatesStartTime', 'ProductVersion', 'TargetReleaseVersion', 'TargetReleaseVersionInfo', 'DeferUpgrade', 'DeferUpgradePeriod', 'DeferUpdatePeriod', 'ExcludeWUDriversInQualityUpdate' ) foreach ($k in $keys) { Write-Host " - $k" Remove-ItemProperty -Path $wu -Name $k -Force } Write-Host "[3/8] OS-specifieke fix bepalen..." $build = (Get-CimInstance Win32_OperatingSystem).BuildNumber Write-Host " Build: $build" if ($build -in 14393, 17763, 20348) { Write-Host " Server 2016/2019/2022: DisableDualScan = 1 zetten" New-ItemProperty -Path $wu -Name 'DisableDualScan' -PropertyType DWord -Value 1 -Force | Out-Null } if ($build -eq 26100) { Write-Host " Server 2025: policy-driven update source waarden zetten" $srcKeys = @( 'SetPolicyDrivenUpdateSourceForFeatureUpdates', 'SetPolicyDrivenUpdateSourceForQualityUpdates', 'SetPolicyDrivenUpdateSourceForDriverUpdates', 'SetPolicyDrivenUpdateSourceForOtherUpdates' ) foreach ($k in $srcKeys) { Write-Host " - $k" New-ItemProperty -Path $wu -Name $k -PropertyType DWord -Value 1 -Force | Out-Null } if (-not (Test-Path $au)) { New-Item -Path $au -Force | Out-Null } New-ItemProperty -Path $au -Name 'UseUpdateClassPolicySource' -PropertyType DWord -Value 1 -Force | Out-Null } Write-Host "[4/8] WU cache leegmaken..." Remove-Item 'C:\Windows\SoftwareDistribution\DataStore\*' -Recurse -Force Remove-Item 'C:\Windows\SoftwareDistribution\Download\*' -Recurse -Force Write-Host "[5/8] WU services starten..." Start-Service cryptsvc Start-Service bits Start-Service wuauserv Write-Host "[6/8] CcmExec stoppen (max 60 sec)..." $svc = Get-Service ccmexec if ($svc.Status -eq 'Running') { Stop-Service ccmexec -Force try { $svc.WaitForStatus('Stopped', (New-TimeSpan -Seconds 60)) Write-Host " CcmExec netjes gestopt" } catch { Write-Host " CcmExec hangt, force kill..." Stop-Process -Name CcmExec -Force Start-Sleep -Seconds 5 } } Write-Host "[7/8] CcmExec starten..." Start-Service ccmexec Start-Sleep -Seconds 10 Write-Host "[8/8] SCCM cycles triggeren..." $triggers = @( '{00000000-0000-0000-0000-000000000021}', '{00000000-0000-0000-0000-000000000022}', '{00000000-0000-0000-0000-000000000113}', '{00000000-0000-0000-0000-000000000114}' ) foreach ($t in $triggers) { Write-Host " - Trigger $t" Invoke-WmiMethod -Namespace root\ccm -Class SMS_Client -Name TriggerSchedule -ArgumentList $t | Out-Null } Write-Host "" Write-Host "Klaar. Geef de scan 10-15 min voordat je Software Center checkt."