Windows Server 2019: Windows Update marca “Falhou” após instalação manual via DISM — como confirmar e corrigir

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.

Índice

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:

  1. 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.
  2. 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:

  1. Abrir Prompt de Comando (Admin) ou PowerShell (Admin).
  2. Consultar pacotes instalados: DISM /Online /Get-Packages | findstr /i "5037932 5038283" Se constar State : Installed para os KBs, o update está aplicado.
  3. (Opcional) Em PowerShell, filtrar pacotes: Get-WindowsPackage -Online | Where-Object { $_.PackageName -match "KB5037932|KB5038283" } | Select-Object PackageName, ReleaseType, InstallTime, State
  4. (Opcional) Conferir o nível do build e UBR: Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" | Select-Object ReleaseId, DisplayVersion, CurrentBuild, UBR O par CurrentBuild + 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:

  1. Criar pastas temporárias: mkdir C:\temp mkdir C:\temp\cab
  2. Baixar o arquivo .msu correspondente ao cumulativo desejado.
  3. Extrair o .cab de dentro do .msu: expand -F:* C:\temp<arquivo>.msu C:\temp\cab
  4. Instalar com DISM: DISM /Online /Add-Package /PackagePath:C:\temp\cab<arquivo>.cab
  5. 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 e KB5038283.
  • 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

  1. Parar serviços relacionados: net stop wuauserv net stop bits net stop cryptsvc
  2. Renomear pastas de cache: ren %windir%\SoftwareDistribution SoftwareDistribution.old ren %windir%\System32\catroot2 catroot2.old
  3. Iniciar serviços: net start cryptsvc net start bits net start wuauserv
  4. Forçar nova varredura: UsoClient StartScan UsoClient StartDownload UsoClient StartInstall Observação: em versões atuais, UsoClient substitui os parâmetros antigos do wuauclt. O comportamento pode ser assíncrono.

Boas práticas complementares

ObjetivoComando/açãoObservações
Limpar cache do Windows Updatenet 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 sistemasfc /scannowBoa prática se múltiplas atualizações falham.
Reparar imagem do WindowsDISM /Online /Cleanup-Image /RestoreHealthRepara componentes corrompidos do CBS. Exige acesso a origem, se necessário.
Manter consistência do .NETExecutar 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 escalaWSUS 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çãoO que fazerJustificativa
DISM /Get-Packages mostra KBs como InstalledIgnorar o “Falhou” no histórico ou limpar cacheEstado real do sistema é o CBS, não o histórico do WU
DISM não lista o KB esperadoReinstalar via DISM, revisar logs e pré‑requisitosO pacote não foi aplicado; investigar causa-raiz
Falhas recorrentes em vários cumulativosExecutar sfc + DISM /RestoreHealth, checar disco e driversPossí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)

  1. 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.
  2. Reparar base (se necessário): sfc /scannow DISM /Online /Cleanup-Image /RestoreHealth
  3. 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
  4. 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çãoCausa provávelCorreção sugerida
0x800f0922 / 0x800f0988Falha ao aplicar componente; SSU ausente; falta de espaçoVerificar SSU/baseline; rodar DISM /RestoreHealth; garantir > 3–5 GB livres em C:
0x8024200DDownload corrompido no cache do WURedefinir SoftwareDistribution e catroot2
Install Pending infinitoReinício pendente bloqueando nova instalaçãoReiniciar 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:

FerramentaComandoConfiabilidade p/ cumulativosObservações
DISMDISM /Online /Get-PackagesAltaFonte de verdade do CBS
PowerShell (CBS)Get-WindowsPackage -OnlineAltaMesma origem do DISM
Get-HotFixGet-HotFixMédiaPode não cobrir todos os LCUs/.NET
Histórico do WUGUI do Windows UpdateBaixaRegistro 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 do CBS.log e número do UBR.
  • 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.

Índice