Какова цель параметра 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
должны выполняться в указанном порядке, поскольку каждый из них зависит от того, что делает предыдущий:
-
Хранилище компонентов всегда следует очищать перед запуском Центра обновления Windows, после возникновения проблем с Центром обновления Windows и не реже одного раза в месяц, поскольку со временем оно загрязняется из-за обновлений, иногда нарушающих жесткие ссылки.# 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
-
Требуется подключение к Интернету, иначе потребуется автономный метод:# 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 и т. д.) :- Создать установочный носитель Windows 10 → Загрузить инструмент сейчас → Выбрать для установки на другой компьютер
- Смонтируйте ISO и определите индекс установленной ОС [образ] из
install.esd
||install.wim
:Dism /Get-ImageInfo /ImageFile:"Z:\sources\install.esd"
- Укажите порядковый номер в конце
/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
- Используйте
- Перезагрузитесь (при обнаружении ошибок просмотрите
%WinDir%\Logs\DISM\dism.log
, начиная снизу вверх)- Файлы журнала легче читать и просеивать с помощью синтаксиса журнала в VS Code.
- Файлы журнала легче читать и просеивать с помощью синтаксиса журнала в VS Code.
-
# Online (while booted to Windows): Sfc /ScanNow # Offline (while booted to WinPE/WinRE): Sfc /ScanNow /OffBootDir=D:\ /OffWinDir=D:\Windows
- Перезагрузитесь (если были обнаружены ошибки, просмотрите
%WinDir%\Logs\CBS\CBS.log
, начиная снизу вверх)
Я запускаю их еженедельно через планировщик задач, чтобы предотвратить случайные проблемы:
Dism_ComponentCleanup.xml
Выполняется еженедельно по воскресеньям в 11:30:00Dism_RestoreHealth.xml
Выполняется еженедельно по воскресеньям в 12:00:00Sfc_ScanNow.xml
Выполняется еженедельно по воскресеньям в 13:00:00
Чтобы импортировать в планировщик задач:
- GUI:
-
TaskSchd.msc
- Действие → Новая папка ... → Имя:
Custom
- Действие → Импортировать задачу ... →
<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