Какова цель параметра DISM / RestoreHealth и SFC?

Aug 19 2020

Каково назначение DISM /RestoreHealthпараметра и SFC /ScanNowпараметра?

  • Как они соотносятся друг с другом?
  • В каком порядке их запускать?
  • Почему последовательность заказов имеет значение при их выполнении?

Ответы

3 JW0914 Aug 19 2020 at 13:28

Компонент магазин [ %WinDir%\WinSxS] содержит резервную копию всех системных файлов Windows , а SFCи DISMуправлять двумя отдельными, жизненно важные части компонентов магазина и ОС, с SFCполагаясь исключительно на то , что DISMуправляет.



  • DISMимеет две функции SFC, /StartComponentCleanupи /RestoreHealth, /RestoreHealthполагаясь исключительно на/StartComponentCleanup
    • /StartComponentCleanup: Очищает Хранилище компонентов от любых неработающих жестких ссылок.
      Очень важно, чтобы люди, использующие сборки Insider, запускали это регулярно из-за частых обновлений
    • /RestoreHealth: Проверяет и исправляет любые повреждения в Магазине компонентов, сравнивая резервные копии системных файлов с заведомо исправными копиями с серверов Центра обновления Windows посредством сравнения хэшей; хотя автономный метод существует [ниже], он не всегда может исправить повреждение

  • SFCвсегда предполагает, что Хранилище компонентов не повреждено, и поэтомуDISM /RestoreHealthпараметр всегда следует запускать доSFC; не делать это позволяет поврежденный компонент магазин потенциально заменить хороший системный файл с поврежденной, или не исправить коррупции в%WinDir%целом
    • /ScanNow: Проверяет и исправляет любые повреждения внутри %WinDir%, сравнивая с заведомо исправными копиями в хранилище компонентов посредством сравнения хэшей.


DISMи SFCдолжны выполняться в указанном порядке, поскольку каждый из них зависит от того, что делает предыдущий:

  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
    
    Хранилище компонентов всегда следует очищать перед запуском Центра обновления Windows, после возникновения проблем с Центром обновления Windows и не реже одного раза в месяц, поскольку со временем оно загрязняется из-за обновлений, иногда нарушающих жесткие ссылки.

  2. # Online (while booted to Windows):
      Dism /Online /Cleanup-Image /RestoreHealth
    
    # Offline (while booted to WinPE/WinRE):
      Dism /Image:"D:\Windows" /Cleanup-Image /RestoreHealth
    
    Требуется подключение к Интернету, иначе потребуется автономный метод:
    • Используйте install.esd|| install.wimиз установочного ISO-образа Windows для установленной версии (v1909, v2004 и т. д.) :
      1. Создать установочный носитель Windows 10Загрузить инструмент сейчас → Выбрать для установки на другой компьютер
      2. Смонтируйте ISO и определите индекс установленной ОС [образ] из install.esd|| install.wim:
        Dism /Get-ImageInfo /ImageFile:"Z:\sources\install.esd"
        
      3. Укажите порядковый номер в конце /Sourceпараметра:
        # 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. Перезагрузитесь (при обнаружении ошибок просмотрите %WinDir%\Logs\DISM\dism.log, начиная снизу вверх)
  4. # Online (while booted to Windows):
      Sfc /ScanNow
    
    # Offline (while booted to WinPE/WinRE):
      Sfc /ScanNow /OffBootDir=D:\ /OffWinDir=D:\Windows
    
  5. Перезагрузитесь (если были обнаружены ошибки, просмотрите %WinDir%\Logs\CBS\CBS.log, начиная снизу вверх)


Я запускаю их еженедельно через планировщик задач, чтобы предотвратить случайные проблемы:

  1. Dism_ComponentCleanup.xml
    Выполняется еженедельно по воскресеньям в 11:30:00
  2. Dism_RestoreHealth.xml
    Выполняется еженедельно по воскресеньям в 12:00:00
  3. Sfc_ScanNow.xml
    Выполняется еженедельно по воскресеньям в 13:00:00

Чтобы импортировать в планировщик задач:

  • GUI:
    1. +R
      → Открыть:TaskSchd.msc
    2. ДействиеНовая папка ... → Имя:Custom
    3. ДействиеИмпортировать задачу ...<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