Após instalar manualmente um cumulativo do Windows Server 2019 via DISM
, o Windows Update continua exibindo “Falhou”? Este guia explica a causa, como confirmar se o servidor está realmente atualizado, como limpar o histórico “cosmético” e como prevenir novas falhas.
Cenário real e sintomas
- O Windows Update falhou repetidamente (quatro tentativas) ao aplicar:
- Cumulative Update de maio/2024 para Windows Server 2019
- .NET Cumulative Update KB 5038283
- O administrador instalou manualmente o pacote cumulativo via
DISM /Online /Add‑Package
a partir do arquivo.cab
obtido no Catálogo Microsoft Update. - Após reiniciar, o Painel de Controle mostrava o KB 5037932 (.NET) instalado, porém o histórico do Windows Update continuava listando o KB 5038283 como Falhou.
Entenda o que está acontecendo (e por que não é um problema de segurança)
Existem dois “mundos” em jogo:
- Windows Update (WU) – histórico de tentativas: armazena o resultado de cada tentativa de instalação iniciada pelo serviço de atualização. Se a tentativa automática falhou, o histórico registra “Falhou”. Esse registro não é substituído por instalações feitas fora do WU.
- Component-Based Servicing (CBS) / DISM – estado efetivo do sistema: mantém a verdade sobre quais pacotes estão instalados. Quando você instala um
.cab
via DISM, o CBS atualiza os componentes, independentemente do histórico do WU.
Resultado: o servidor pode estar totalmente atualizado (seguro), enquanto o histórico do Windows Update exibe “Falhou” por ser um registro da tentativa original e não do estado final. É um efeito cosmético, não uma vulnerabilidade.
Checklist de verificação rápida (vale-ouro)
Use estes passos para confirmar, de forma objetiva, se os KBs estão aplicados:
- Abrir Prompt de Comando (Admin) ou PowerShell (Admin).
- Consultar pacotes instalados:
DISM /Online /Get-Packages | findstr /i "5037932 5038283"
Se constarState : Installed
para os KBs, o update está aplicado. - (Opcional) Em PowerShell, filtrar pacotes:
Get-WindowsPackage -Online | Where-Object { $_.PackageName -match "KB5037932|KB5038283" } | Select-Object PackageName, ReleaseType, InstallTime, State
- (Opcional) Conferir o nível do build e UBR:
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | Select-Object ReleaseId, DisplayVersion, CurrentBuild, UBR
O parCurrentBuild
+UBR
indica o nível exato de patch do sistema.
Instalação manual limpa (passo a passo recomendado)
Quando o Windows Update falha, esta sequência reproduzível costuma resolver e ainda deixa rastros claros para auditoria:
- Criar pastas temporárias:
mkdir C:\temp mkdir C:\temp\cab
- Baixar o arquivo .msu correspondente ao cumulativo desejado.
- Extrair o
.cab
de dentro do.msu
:expand -F:* C:\temp<arquivo>.msu C:\temp\cab
- Instalar com DISM:
DISM /Online /Add-Package /PackagePath:C:\temp\cab<arquivo>.cab
- Reiniciar o servidor.
Dica: sempre execute em console elevado e garanta janela de manutenção apropriada, pois cumulativos do Windows Server geralmente exigem reinicialização.
Como confirmar de forma definitiva
Após a reinicialização, valide o estado dos pacotes:
DISM /Online /Get-Packages | more
- Procure por
KB5037932
eKB5038283
. - Se o State estiver Installed, o update foi aplicado – ainda que o histórico do Windows Update mostre “Falhou”.
Por que o histórico do Windows Update não “corrige” sozinho?
- O registro do WU reflete a execução da tentativa original (que falhou).
- Ao instalar via DISM, a operação é gerenciada pela pilha de manutenção (CBS), não pelo agente de WU; por isso o “histórico” de WU não é reescrito.
- Em outras palavras: o histórico não é fonte de verdade; o CBS/DISM é. Segurança e conformidade devem se basear em
DISM /Get-Packages
ou em inventário que consulte o CBS.
Sincronizar detecção e limpar cache do Windows Update
Se você quiser que o Windows Update reavalie o que está instalado (ou apenas acabar com notificações pendentes), redefina os componentes de WU. Proceda com cautela, especialmente em servidores com janelas de manutenção rígidas.
Passos para redefinir o cache do Windows Update
- Parar serviços relacionados:
net stop wuauserv net stop bits net stop cryptsvc
- Renomear pastas de cache:
ren %windir%\SoftwareDistribution SoftwareDistribution.old ren %windir%\System32\catroot2 catroot2.old
- Iniciar serviços:
net start cryptsvc net start bits net start wuauserv
- Forçar nova varredura:
UsoClient StartScan UsoClient StartDownload UsoClient StartInstall
Observação: em versões atuais,UsoClient
substitui os parâmetros antigos dowuauclt
. O comportamento pode ser assíncrono.
Boas práticas complementares
Objetivo | Comando/ação | Observações |
---|---|---|
Limpar cache do Windows Update | net stop wuauserv ren %windir%\SoftwareDistribution SoftwareDistribution.old net start wuauserv | Força o WU a reavaliar o estado. Útil após instalação via DISM. |
Verificar integridade do sistema | sfc /scannow | Boa prática se múltiplas atualizações falham. |
Reparar imagem do Windows | DISM /Online /Cleanup-Image /RestoreHealth | Repara componentes corrompidos do CBS. Exige acesso a origem, se necessário. |
Manter consistência do .NET | Executar o instalador offline da versão 3.5/4.x se o recurso estiver ausente antes do cumulativo. | Evita falhas de pré-requisito do .NET Framework. |
Automatizar em escala | WSUS ou script PowerShell para baixar/aplicar em lote. | Garante consistência e auditoria centralizadas. |
Armadilhas comuns (e como evitá‑las)
- Arquivo incorreto: baixe o pacote certo para Server 2019 (x64). Não confunda com edições cliente ou arquitetura errada.
- Dependências/SSU: em baselines mais antigos, a Servicing Stack Update (SSU) pode ser pré-requisito. Atualmente, muitas LCUs já incluem SSU, mas em ambientes desatualizados instale a SSU antes.
- Idioma: servidores com language packs podem requerer pacotes adicionais. Prefira instalar cumulativos correspondentes ao idioma-base.
- Drivers/AV: drivers antigos ou filtros de antivírus podem interferir. Considere modo de manutenção, exceções temporárias ou atualização de drivers.
Quando ignorar o “Falhou” (e quando se preocupar)
Situação | O que fazer | Justificativa |
---|---|---|
DISM /Get-Packages mostra KBs como Installed | Ignorar o “Falhou” no histórico ou limpar cache | Estado real do sistema é o CBS, não o histórico do WU |
DISM não lista o KB esperado | Reinstalar via DISM, revisar logs e pré‑requisitos | O pacote não foi aplicado; investigar causa-raiz |
Falhas recorrentes em vários cumulativos | Executar sfc + DISM /RestoreHealth , checar disco e drivers | Possível corrupção de componentes ou problemas de I/O |
Onde investigar: logs que realmente ajudam
- CBS.log:
C:\Windows\Logs\CBS\CBS.log
– principal para pacotes instalados via DISM/servicing. - DISM.log:
C:\Windows\Logs\DISM\dism.log
– detalhes da execução do DISM. - WindowsUpdate log: gere um consolidado legível:
Get-WindowsUpdateLog -LogPath "$env:USERPROFILE\Desktop\WindowsUpdate.log"
- Eventos do Windows Update Client:
Get-WinEvent -ProviderName Microsoft-Windows-WindowsUpdateClient -MaxEvents 50 | Select-Object TimeCreated, Id, LevelDisplayName, Message
Fluxo de resolução recomendado (árvore de decisão)
- Confirmar estado com DISM:
DISM /Online /Get-Packages | findstr /i "5037932 5038283"
- Se Installed → seguir para o passo 4 (cosmético).
- Se Absent ou Install Pending → passo 2.
- Reparar base (se necessário):
sfc /scannow DISM /Online /Cleanup-Image /RestoreHealth
- Instalação manual limpa:
expand -F:* C:\temp<arquivo>.msu C:\temp\cab DISM /Online /Add-Package /PackagePath:C:\temp\cab<arquivo>.cab shutdown /r /t 0
- Opcional: sincronizar/limpar WU:
net stop wuauserv & net stop bits & net stop cryptsvc ren %windir%\SoftwareDistribution SoftwareDistribution.old ren %windir%\System32\catroot2 catroot2.old net start cryptsvc & net start bits & net start wuauserv UsoClient StartScan
Scripts prontos (copie e use com cuidado)
PowerShell: verificar rapidamente se os KBs estão instalados
$kbs = "KB5037932","KB5038283"
Get-WindowsPackage -Online |
Where-Object { $kbs | ForEach-Object { $PSItem.PackageName -match $_ } } |
Select-Object PackageName, State, InstallTime |
Format-Table -AutoSize
CMD: instalar um .msu de forma silenciosa com log
mkdir C:\temp\cab
expand -F:* C:\temp\update.msu C:\temp\cab
DISM /Online /Add-Package /PackagePath:C:\temp\cab\update.cab /LogPath:C:\temp\dism_install.log
shutdown /r /t 0
Erros frequentes e correções
Código/descrição | Causa provável | Correção sugerida |
---|---|---|
0x800f0922 / 0x800f0988 | Falha ao aplicar componente; SSU ausente; falta de espaço | Verificar SSU/baseline; rodar DISM /RestoreHealth ; garantir > 3–5 GB livres em C: |
0x8024200D | Download corrompido no cache do WU | Redefinir SoftwareDistribution e catroot2 |
Install Pending infinito | Reinício pendente bloqueando nova instalação | Reiniciar o servidor; se persistir, DISM /RevertPendingActions (com cautela) |
Validação para auditoria e conformidade
Para relatórios de compliance, prefira consultas ao CBS/DISM. Alguns inventários usam Get-HotFix
(Win32_QuickFixEngineering), que nem sempre lista todos os cumulativos ou .NET. Seguem alternativas:
Ferramenta | Comando | Confiabilidade p/ cumulativos | Observações |
---|---|---|---|
DISM | DISM /Online /Get-Packages | Alta | Fonte de verdade do CBS |
PowerShell (CBS) | Get-WindowsPackage -Online | Alta | Mesma origem do DISM |
Get-HotFix | Get-HotFix | Média | Pode não cobrir todos os LCUs/.NET |
Histórico do WU | GUI do Windows Update | Baixa | Registro de tentativas, não do estado final |
Notas específicas sobre .NET em servidores
- O cumulativo do .NET (ex.: KB 5037932) pode aparecer no Painel de Controle, enquanto o cumulativo do Windows (ex.: KB 5038283) permanece com status “Falhou” no histórico do WU. Valide ambos no CBS.
- Se o recurso “.NET Framework 3.5 Features” (
NetFx3
) não estiver habilitado e o cumulativo referenciar componentes dele, habilite-o antes:DISM /Online /Enable-Feature /FeatureName:NetFx3 /All
Em ambientes com WSUS/SCCM
- Garanta que as classificações/linguagens corretas estejam aprovadas.
- Após instalação manual fora do WSUS, pode haver defasagem até o próximo detection cycle. Forçar detecção local ajuda a sincronizar o status de compliance.
- Padronize janelas de manutenção e reinícios controlados para evitar pendências que travam novas instalações.
Perguntas rápidas (FAQ)
O histórico do Windows Update marcando “Falhou” significa que meu servidor está vulnerável?
Não, se DISM /Get-Packages
indicar Installed para os KBs. O histórico reflete a tentativa automática anterior, não o estado final.
Preciso reinstalar o KB que já aparece como Installed no DISM?
Não. Isso apenas repetirá a aplicação. O importante é manter o servidor dentro do baseline mais recente.
Posso limpar o histórico para “sumir” o Falhou?
Você pode redefinir o cache do WU (renomeando SoftwareDistribution
e catroot2
). Isso força o agente a reavaliar e renova o histórico.
Qual método é preferível: .msu ou .cab?
Ambos funcionam. Em servidores, a extração do .cab
e instalação via DISM oferecem logs consistentes e maior controle.
Resumo prático do caso
- O Windows Update mostrava falha repetida ao instalar o cumulativo de maio/2024 e o .NET KB 5038283.
- O administrador aplicou manualmente via
DISM /Online /Add-Package
usando o.cab
. - Após a reinicialização, o Painel de Controle mostrava o KB 5037932 instalado, mas o histórico do WU mantinha “Falhou” para KB 5038283.
- Conclusão: se
DISM /Get-Packages
indicar Installed para os KBs, o servidor está atualizado. O “Falhou” pode ser ignorado ou eliminado ao limpar o cache do WU.
Modelo de comunicação para equipes e auditoria
Quando reportar o desfecho à sua equipe ou ao time de auditoria, use linguagem baseada em evidência técnica:
“O cumulativo do Windows Server 2019 referente a maio/2024 e o .NET (KB 5037932/KB 5038283) foram aplicados manualmente via DISM. O CBS registra Installed para ambos. O histórico do Windows Update exibe ‘Falhou’ por registrar a tentativa automática anterior; já foi iniciada a limpeza do cache para reavaliação local.”
Checklist final para fechar o incidente
- Registrar evidências: saída do
DISM /Get-Packages
, trecho relevante doCBS.log
e número doUBR
. - Confirmar ausência de reinícios pendentes:
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending" -ErrorAction SilentlyContinue
- Executar a limpeza opcional do cache do WU e um novo scan.
- Planejar aplicação automática dos próximos cumulativos (WSUS/SCCM/Script) para evitar manualidades recorrentes.
Mensagem-chave: confie no DISM/CBS para saber se um update está aplicado. O histórico do Windows Update pode manter registros de falhas antigas e, em muitos casos, isso é apenas cosmético após uma instalação manual bem‑sucedida.
Comandos essenciais reunidos
:: Verificar rapidamente os KBs
DISM /Online /Get-Packages | findstr /i "5037932 5038283"
:: Instalação manual limpa
expand -F:* C:\temp<arquivo>.msu C:\temp\cab
DISM /Online /Add-Package /PackagePath:C:\temp\cab<arquivo>.cab
shutdown /r /t 0
:: Reparar integridade
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
:: Limpar cache do Windows Update e reavaliar
net stop wuauserv
net stop bits
net stop cryptsvc
ren %windir%\SoftwareDistribution SoftwareDistribution.old
ren %windir%\System32\catroot2 catroot2.old
net start cryptsvc
net start bits
net start wuauserv
UsoClient StartScan
Resumo prático: se o DISM /Get-Packages
indicar Installed para os KBs desejados, o servidor está atualizado. O histórico de falha pode ser ignorado ou limpo; não indica problema real após uma instalação manual bem‑sucedida.