Administradores se surpreendem quando atualizações aplicadas por script no Windows Server 2019/2022 não surgem na interface ✔ “Exibir histórico de atualizações”. Este guia explica por quê, mostra como comprovar a instalação e apresenta práticas para gerar relatórios confiáveis.
Visão geral do problema
Ao usar scripts PowerShell (módulo PSWindowsUpdate
) ou chamadas diretas às APIs COM (Microsoft.Update.Session
, Downloader
, Installer
), as atualizações são efetivamente baixadas e aplicadas. Contudo, a lista exibida em Configurações ▶ Windows Update ▶ Exibir histórico de atualizações permanece inalterada. Esse comportamento pode confundir auditorias e relatórios de conformidade, já que a GUI parece indicar que o servidor está desatualizado — mesmo quando não está.
Por que as atualizações não aparecem?
Motivo | Detalhe técnico |
---|---|
Instalação fora do serviço Windows Update | Scripts que se apoiam em DISM, WUSA ou na pilha CBS gravam eventos no Event Log e em Win32_QuickFixEngineering , mas não inserem dados na base DataStore.edb (WUClient). A tabela WUHistory permanece vazia, logo, nada é renderizado na GUI. |
Limitações do PSWindowsUpdate | Por padrão, o módulo decide se usa UseWusa ou UseDism . Esses caminhos não chamam o serviço wuauserv, portanto o histórico também não é alimentado. |
Tipo de pacote | Drivers, SSU e algumas CUs instaladas “fora de banda” recebem o estado Installedno catálogo, porém são classificadas internamente como Other, ficando fora do filtro de exibição da interface gráfica. |
Entendendo o fluxo interno
Quando o serviço wuauserv
é quem comanda o download/instalação, cada etapa gera chamadas para %SystemRoot%\SoftwareDistribution\DataStore
. É daí que a UI consome dados.
Se o patch entra pelo canal DISM/WUSA ou pelas interfaces COM sem registrar a sessão, o log é gravado somente em:
- Event Viewer ▶ Applications and Services Logs ▶ Microsoft ▶ Windows ▶ WindowsUpdateClient
Win32_QuickFixEngineering
(WMI) — base paraGet-HotFix
- Arquivos
.cab
temporários da CBS emC:\Windows\Logs\CBS
Como confirmar que o patch está aplicado
1 · Event Viewer
Abra eventvwr.msc e navegue até WindowsUpdateClient. Filtre pelos IDs 19
, 20
(Installation Started) e 21
(Installation Completed) para localizar o KB.
2 · PowerShell – WMI/Win32\_QuickFixEngineering
Get-HotFix -Id KB5008276 # substitua pelo número desejado
ou
Get-CimInstance Win32_QuickFixEngineering | Where-Object HotFixID -eq 'KB5008276'
3 · DISM – Inventário de pacotes
dism /online /get-packages | findstr KB5008276
Se qualquer um dos métodos retorna o KB, o patch está presente — independentemente da ausência na GUI.
Opções e soluções práticas
O que fazer | Observações práticas |
---|---|
Aceitar a limitação e usar Get-HotFix ou logs | Ideal quando você controla o processo via automação. Inclua a saída no pipeline CI/CD ou em relatórios de compliance. |
Forçar instalação via serviço Windows Update | Execute:Install-WindowsUpdate -MicrosoftUpdate -UseWUApi Isso chama o IUpdateInstaller dentro do serviço, preenchendo DataStore.edb . Em servidores sem GUI, use:wuauclt /detectnow && wuauclt /updatenow . |
Registrar manualmente (avançado) | Embora possible gravar WMI MSFT_WUHistoryEvent via New-CimInstance , a Microsoft não recomenda editar DataStore.edb . Uma entrada malformada pode forçar o cliente a recriar toda a pasta SoftwareDistribution. |
Gerar relatório próprio | No fim do script, colete:$kbs = Get-HotFix | Select-Object -ExpandProperty HotFixID Salve como .csv ou envie por e‑mail. Para detalhes de log, use Get-WindowsUpdateLog (converte ETL em texto). |
Dicas complementares
- Use
sconfig
em Server Core se precisar que a instalação passe pela UI legada (6‑passos do antigoWindows Update
). - Mantenha o Servicing Stack Update em dia: SSUs desatualizados podem instalar o patch mas falhar ao escrever no histórico.
- WSUS / Windows Update for Business: esses serviços coletam status via reporting events, mesmo quando o KB entrou por script. O painel do WSUS exibirá
Installed
. - Cuidado com Rollback: se você remover um patch via
wusa /uninstall
, o histórico pode ficar inconsistente — a remoção é registrada, mas a instalação original continua oculta na GUI. - Para clusters Failover, instale um nó por vez com
Install-WindowsUpdate -IgnoreReboot
e insira a reinicialização no CAU; isso reduz downtime e mantém logs separados por nó.
Perguntas frequentes (FAQ)
Posso confiar em Win32_QuickFixEngineering
para auditorias?
Sim. A própria Microsoft indica Get‑HotFix como fonte supported
para inventário de patches. O que a GUI mostra é apenas uma projeção da mesma informação, mas filtrada pelos eventos que o cliente WU processa.
Scripts PowerShell podem atualizar o histórico automaticamente?
Somente se você chamar UseWUApi
no PSWindowsUpdate ≥ v2.2.1.0. Caso contrário, será necessário instalar via wuauserv
ou registrar manualmente (não recomendado).
Existe impacto em não ter o histórico preenchido?
Funcionalmente, nenhum. O patch está ativo no sistema. O impacto é administrativo: relatórios de segurança, auditorias ou ferramentas de inventário que leem somente a GUI podem reportar estado incorreto.
Posso usar GPO para forçar o histórico?
Não. As Diretivas de Grupo controlam detecção/agendamento, mas não alteram o modo como DISM/WUSA escrevem na base de dados. Para unificar logs, padronize o método de instalação (WSUS, Intune, etc.).
Checklist rápido para scripts PowerShell
- Carregar módulo:
Install-Module PSWindowsUpdate
- Exigir Microsoft Update:
Add-WUServiceManager -ServiceID "7971f918-a847-4430-9279-4a52d1efe18d"
- Instalar e registrar:
Install-WindowsUpdate -MicrosoftUpdate -UseWUApi -AcceptAll -AutoReboot
- Logar resultado:
$today = Get-Date; Get-WindowsUpdateLog -destination "C:\Logs\WU$($today.ToString('yyyyMMddHHmm')).log"
- Enviar e‑mail (ex.):
Send-MailMessage -From ... -To ... -Subject "Relatório WU" -Attachments $log
Conclusão
A ausência de registros na página “Exibir histórico de atualizações” ao usar scripts não significa que o servidor esteja desprotegido. O que ocorre é uma diferença de canal: apenas operações conduzidas pelo serviço Windows Update alimentam a base de dados que a GUI lê. Para auditorias rigorosas, confie nos logs do Event Viewer, em Get-HotFix
ou em relatórios de WSUS/Intune. Se você deseja ver tudo na interface gráfica, padronize a instalação pelo próprio wuauserv
ou recorra a -UseWUApi
no PSWindowsUpdate.