Implement monitoring to track update installation success and identify runtime-related failures.
Create a PowerShell script to monitor update installation times:
# Check recent update installation times from client logs
$Computers = Get-CMDevice -CollectionName "All Systems" | Select -First 10
foreach ($Computer in $Computers) {
$InstallHistory = Get-WmiObject -ComputerName $Computer.Name -Namespace "root\ccm\SoftwareUpdates\UpdatesStore" -Class CCM_UpdateStatus -ErrorAction SilentlyContinue
$InstallHistory | Where-Object {$_.Status -eq "Installed" -and $_.ScanTime -gt (Get-Date).AddDays(-7)} | Select PSComputerName, Article, Status, ScanTime
}
Review ConfigMgr logs for timeout-related errors. Key log files to monitor:
- UpdatesDeployment.log (client): Shows update installation progress and timeouts
- WindowsUpdate.log (client): Windows Update agent activity
- WUAHandler.log (client): ConfigMgr interaction with Windows Update
Query the database for timeout failures:
-- Run this query in SQL Server Management Studio against your ConfigMgr database
SELECT
ui.BulletinID,
ui.Title,
ui.MaxExecutionTime,
COUNT(*) as FailureCount
FROM v_UpdateInfo ui
INNER JOIN v_UpdateComplianceStatus ucs ON ui.CI_ID = ucs.CI_ID
WHERE ucs.Status = 4 -- Failed status
AND ui.DatePosted > DATEADD(day, -30, GETDATE())
GROUP BY ui.BulletinID, ui.Title, ui.MaxExecutionTime
ORDER BY FailureCount DESC
Pro tip: Set up automated reports to track updates that consistently exceed their runtime limits. This helps you proactively adjust settings before widespread deployment failures.
Verification: Review deployment success rates over the next month. You should see reduced timeout-related failures for updates where you've increased the maximum runtime.