Qual é a finalidade do parâmetro DISM / RestoreHealth e SFC?

Aug 19 2020

Qual é a finalidade do DISM /RestoreHealthparâmetro e do SFC /ScanNowparâmetro?

  • Como eles se correlacionam?
  • Em que ordem eles devem ser executados?
  • Por que a sequência de pedido importa ao executar qualquer um deles?

Respostas

3 JW0914 Aug 19 2020 at 13:28

O Component Store [ %WinDir%\WinSxS] mantém uma cópia de backup de todos os arquivos do sistema Windows SFCe DISMgerencia duas partes vitais e separadas do Component Store e do sistema operacional, SFCdependendo inteiramente do que DISMgerencia.



  • DISMtem duas funções nas quais SFCconfia, /StartComponentCleanupe /RestoreHealth, com /RestoreHealthbase apenas em/StartComponentCleanup
    • /StartComponentCleanup: Limpa o armazenamento de componentes de todos os links físicos quebrados.
      É fundamental que as pessoas no Insider Builds executem isso regularmente devido às atualizações frequentes
    • /RestoreHealth: Verifica e corrige qualquer corrupção no armazenamento de componentes, verificando seus backups de arquivos do sistema contra cópias boas conhecidas dos servidores do Windows Update por meio de comparação de hash; embora exista um método offline [abaixo], ele nem sempre corrige a corrupção

  • SFCsempre assume que o armazenamento de componente não está corrompido e é por isso que oDISM /RestoreHealthparâmetro deve sempre ser executado antes deSFC; não fazer isso permite que um armazenamento de componentes corrompido substitua potencialmente um arquivo de sistema em bom estado por um corrompido ou não conserte a corrupção por%WinDir%completo
    • /ScanNow: Verifica e corrige qualquer corrupção %WinDir%, comparando as cópias boas conhecidas no armazenamento de componentes por meio de comparação de hash


DISMe SFCdeve ser executado na ordem listada, pois cada um depende do que o anterior faz:

  1. # Online (while booted to Windows):
      Dism /Online /Cleanup-Image /StartComponentCleanup
    
    # Offline (while booted to WinPE/WinRE):
      Dism /Image:"D:\Windows" /Cleanup-Image /StartComponentCleanup
      # C: is usually not the drive letter in WinPE/WinRE
      # To ascertain: DiskPart -> Lis Vol -> Exit
    
    O armazenamento de componentes deve ser sempre limpo antes de executar o Windows Update, após um problema com o Windows Update e pelo menos uma vez por mês, pois fica sujo com o tempo devido às atualizações que ocasionalmente quebram links físicos

  2. # Online (while booted to Windows):
      Dism /Online /Cleanup-Image /RestoreHealth
    
    # Offline (while booted to WinPE/WinRE):
      Dism /Image:"D:\Windows" /Cleanup-Image /RestoreHealth
    
    Requer uma conexão com a Internet, caso contrário, o método offline será necessário:
    • Use o install.esd|| install.wimna ISO de instalação do Windows para a versão instalada (v1909, v2004, etc.) :
      1. Crie a mídia de instalação do Windows 10Baixe a ferramenta agora → Escolha instalar em outro PC
      2. Monte o ISO e determine o índice do SO instalado [imagem] a partir do install.esd|| install.wim:
        Dism /Get-ImageInfo /ImageFile:"Z:\sources\install.esd"
        
      3. Especifique o número do índice no final do /Sourceparâmetro:
        # Online (while booted to Windows):
          # ESD:
            Dism /Online /Cleanup-Image /RestoreHealth /Source:esd:"Z:\sources\install.esd":6 /LimitAccess
        
          # WIM:
            Dism /Online /Cleanup-Image /RestoreHealth /Source:wim:"Z:\sources\install.wim":6 /LimitAccess
        
        # Offline (while booted to WinPE/WinRE):
          Dism /Image:"D:\Windows" /Cleanup-Image /RestoreHealth /Source:esd:"Z:\sources\install.esd":6 /LimitAccess
        

  3. Reinicialize (se forem encontrados erros, revise %WinDir%\Logs\DISM\dism.log, começando de baixo para cima)
  4. # Online (while booted to Windows):
      Sfc /ScanNow
    
    # Offline (while booted to WinPE/WinRE):
      Sfc /ScanNow /OffBootDir=D:\ /OffWinDir=D:\Windows
    
  5. Reinicialize (se forem encontrados erros, revise %WinDir%\Logs\CBS\CBS.log, começando de baixo para cima)


Eu os executo semanalmente por meio do Agendador de Tarefas para ajudar a evitar a ocorrência de problemas aleatórios:

  1. Dism_ComponentCleanup.xml
    Executa semanalmente aos domingos às 11:30:00
  2. Dism_RestoreHealth.xml
    Executa semanalmente aos domingos às 12h00
  3. Sfc_ScanNow.xml
    Executa semanalmente aos domingos às 13:00:00

Para importar para o Agendador de tarefas:

  • GUI:
    1. +R
      → Abrir:TaskSchd.msc
    2. AçãoNova pasta ... → Nome:Custom
    3. AçãoImportar Tarefa ...<task_name>.xml

  • CLI:
    • Cmd:
      SchTasks /Create /Xml "%UserProfile%\Downloads\<task_name>.xml" /Tn "\Custom\Task Name" /Ru "%ComputerName%\%UserName%"
      
    • Powershell:
      Register-ScheduledTask -Xml (Get-Content '$env:UserProfile\Downloads\<task_name>.xml' | Out-String) -TaskName "Task Name" -TaskPath "\Custom\" -User $env:ComputerName\$env:UserName –Force