103 lines
3.2 KiB
PowerShell
103 lines
3.2 KiB
PowerShell
$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." |