À quoi servent le paramètre DISM / RestoreHealth et SFC?

Aug 19 2020

Quel est le but du DISM /RestoreHealthparamètre et du SFC /ScanNowparamètre?

  • Comment sont-ils corrélés les uns aux autres?
  • Dans quel ordre doivent-ils être exécutés?
  • Pourquoi la séquence d'ordre est-elle importante lors de l'exécution de l'un ou l'autre?

Réponses

3 JW0914 Aug 19 2020 at 13:28

Le magasin de composants [ %WinDir%\WinSxS] conserve une copie de sauvegarde de tous les fichiers système Windows SFCet DISMgère deux éléments vitaux distincts du magasin de composants et du système d'exploitation, en SFCs'appuyant entièrement sur ce qui DISMgère.



  • DISMa deux fonctions SFCrepose sur, /StartComponentCleanupet /RestoreHealth, en /RestoreHealths'appuyant uniquement sur/StartComponentCleanup
    • /StartComponentCleanup: Nettoie le magasin de composants de tous les liens durs rompus
      Il est impératif que les utilisateurs de Insider Builds l'exécutent régulièrement en raison des mises à jour fréquentes
    • /RestoreHealth: Vérifie et corrige toute corruption dans le magasin de composants en vérifiant ses sauvegardes de fichiers système par rapport aux bonnes copies connues des serveurs Windows Update via une comparaison de hachage; alors qu'une méthode hors ligne existe [ci-dessous], elle ne corrige pas toujours la corruption

  • SFCsuppose toujours que le magasin de composants n'est pas corrompu et c'est pourquoi leDISM /RestoreHealthparamètre doit toujours être exécuté avantSFC; ne pas le faire permet à un magasin de composants corrompu de remplacer potentiellement un bon fichier système par un fichier corrompu ou de ne pas corriger%WinDir%complètement la corruption à l'intérieur
    • /ScanNow: Vérifie et corrige toute corruption à l'intérieur %WinDir%en comparant les bonnes copies connues dans le magasin de composants via une comparaison de hachage


DISMet SFCdoivent être exécutés dans l'ordre indiqué, car chacun repose sur ce que fait le précédent:

  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
    
    Le magasin de composants doit toujours être nettoyé avant d'exécuter Windows Update, après un problème avec Windows Update, et au moins une fois par mois, car il devient sale au fil du temps à cause des mises à jour qui cassent parfois des liens durs

  2. # Online (while booted to Windows):
      Dism /Online /Cleanup-Image /RestoreHealth
    
    # Offline (while booted to WinPE/WinRE):
      Dism /Image:"D:\Windows" /Cleanup-Image /RestoreHealth
    
    Nécessite une connexion Internet, sinon la méthode hors ligne sera requise:
    • Utilisez le install.esd|| install.wimdepuis l' ISO d'installation Windows pour la version installée (v1909, v2004, etc.) :
      1. Créer un support d'installation Windows 10Télécharger l'outil maintenant → Choisir d' installer sur un autre PC
      2. Montez l'ISO et déterminez l' index du système d'exploitation [image] installé à partir de install.esd|| install.wim:
        Dism /Get-ImageInfo /ImageFile:"Z:\sources\install.esd"
        
      3. Spécifiez le numéro d'index à la fin du /Sourceparamètre:
        # 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. Redémarrez (si des erreurs sont détectées, examinez le %WinDir%\Logs\DISM\dism.log, en commençant par le bas)
    • Les fichiers journaux sont plus faciles à lire et à parcourir via la syntaxe Log dans VS Code

  4. # Online (while booted to Windows):
      Sfc /ScanNow
    
    # Offline (while booted to WinPE/WinRE):
      Sfc /ScanNow /OffBootDir=D:\ /OffWinDir=D:\Windows
    
  5. Redémarrez (si des erreurs ont été trouvées, examinez le %WinDir%\Logs\CBS\CBS.log, en commençant par le bas)


Je les lance chaque semaine via le planificateur de tâches pour éviter que des problèmes aléatoires ne se produisent:

  1. Dism_ComponentCleanup.xml
    Exécute chaque semaine le dimanche à 11h30
  2. Dism_RestoreHealth.xml
    Exécute chaque semaine le dimanche à 12h00
  3. Sfc_ScanNow.xml
    Exécute chaque semaine le dimanche à 13h00

Pour importer dans le planificateur de tâches:

  • GUI:
    1. +R
      → Ouvrir:TaskSchd.msc
    2. ActionNouveau dossier ... → Nom:Custom
    3. ActionImporter la tâche ...<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