0 Голосов

Использование DISM для проверки и восстановления образа Windows

Редактировал(а) Сергей Коршунов 2023/12/08 18:46

Использование DISM для проверки и восстановления образа Windows


Вы можете использовать команды SFC (Проверка системных файлов) и DISM (Обслуживание образов развертывания и управление ими) для проверки и восстановления целостности системных файлов и хранилища компонентов образа Windows (Windows Server). Эти инструменты могут быть чрезвычайно полезны, если ваша Windows нестабильна, не загружается, появляются ошибки при попытке запуска встроенных приложений или служб, после заражения вирусом и т. д.

В этой статье мы рассмотрим, как использовать

SFC /ScanNow
DISM /Online /Cleanup-Image /RestoreHealth,

или

Repair-WindowsImage -Online -RestoreHealth

команды для восстановления образов и системных файлов в Windows 10/11 и Windows Server 2022/2019/2016.

SFC/ScanNow: использование средства проверки системных файлов для восстановления системных файлов Windows

Рекомендуется использовать команду DISM для восстановления Windows после проверки целостности системных файлов с помощью инструмента SFC.

sfc /scannow

Команда сканирует защищенные системные файлы и, если они отсутствуют или повреждены, пытается восстановить их оригинальные копии из хранилища компонентов Windows (папка C:\Windows\WinSxS).

Инструменты SFC записывают все свои действия в

 %windir%\logs\cbs\cbs.log

. Все записи SFC в файле CBS.log помечены тегом [SR]. Чтобы выбрать из журнала только записи, связанные с SFC, выполните команду:

findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >"%userprofile%\Desktop\sfc.txt"

Если

sfc /scannow

Команда возвращает ошибку «Защита ресурсов Windows обнаружила поврежденные файлы, но не смогла исправить некоторые из них», вероятно, инструменту не удалось получить необходимые файлы из хранилища компонентов Windows (см. изображение ниже).

https://ru.a-d.site/common-images/dism-cleanup-image-restorehealth/sfc-scannow-windows-resource-protection-found-co.png

В этом случае вы можете попробовать восстановить хранилище компонентов вашего образа Windows, используя

DISM.exe

команда.

Инструмент DISM (Deployment Image Servicing and Management) доступен во всех версиях Windows, начиная с Vista.

После восстановления образа Windows вы можете попробовать восстановить системные файлы с помощью SFC.

Проверка работоспособности хранилища компонентов Windows с помощью DISM

Этот

DISM /Cleanup-Image /CheckHealth

переключатель используется для сканирования образа Windows на наличие ошибок и их исправления. Команды DISM необходимо запускать из командной строки с повышенными привилегиями.

Выполните следующую команду, чтобы проверить наличие признаков повреждения хранилища компонентов образа Windows (неприменимо для Windows 7/Server 2008R2). Эта команда проверяет флаг CBS, установленный одним из процессов обслуживания системы.

DISM /Online /Cleanup-Image /CheckHealth

Эта команда не выполняет полное сканирование хранилища компонентов. Команда только проверяет, помечен ли ваш образ Windows как поврежденный и возможно ли это исправить. Никакие изменения не вносятся в изображение.

https://ru.a-d.site/common-images/dism-cleanup-image-restorehealth/dism-cleanup-image-checkhealth-check-windows-1.png

В этом примере команда вернула, что образ Windows 10 не поврежден:

No component store corruption detected.
The operation completed successfully.

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

DISM /Online /Cleanup-Image /ScanHealth

Команда для проверки образа Windows может выполняться достаточно долго (10-30 минут). И вернет один из трех результатов:

  • Повреждения хранилища компонентов не обнаружено — DISM не обнаружил ошибок в хранилище компонентов;
  • Хранилище компонентов подлежит ремонту — DISM обнаружил ошибки в хранилище компонентов и может их исправить;

  • Хранилище компонентов не подлежит восстановлению — DISM не может исправить хранилище компонентов Windows (попробуйте использовать более новую версию DISM, иначе вам придется восстанавливать образ Windows из резервной копии, сбрасывать или полностью переустанавливать экземпляр Windows).

https://ru.a-d.site/common-images/dism-cleanup-image-restorehealth/dism-component-store-is-repairable.jpg

Чтобы использовать переключатель DISM/ScanHealth в Windows 7 и Windows Server 2008, необходимо установить обновление KB2966583. В противном случае вы увидите сообщение: «Ошибка 87. Параметр ScanHealth не распознается в этом контексте».

В некоторых случаях DISM /ScanHealth возвращает следующие ошибки:

  • Ошибка DISM 1726 — «Ошибка удаленного вызова процедуры»;
  • Ошибка DISM 1910 — «Указанный экспортер объектов не найден».

Это определенно означает, что ваш образ Windows поврежден и нуждается в восстановлении.

Восстановление образа Windows с помощью DISM/RestoreHealth

Чтобы исправить повреждение в хранилище компонентов образа Windows, необходимо использовать параметр RestoreHealth команды DISM. Эта опция позволит вам исправить ошибки, обнаруженные в образе Windows, автоматически загружать и заменять файлы поврежденных или отсутствующих компонентов оригинальными версиями файлов из Центра обновления Windows (ваш компьютер должен иметь прямой доступ в Интернет). Запустите команду:

DISM /Online /Cleanup-Image /RestoreHealth

В Windows 7/2008 R2 эта команда выглядит иначе:

DISM.exe /Online /Cleanup-Image /ScanHealth

Процесс сканирования и восстановления Хранилища компонентов может занять довольно много времени (30 минут и более). DISM автоматически загрузит и заменит файлы поврежденных или отсутствующих компонентов оригинальными версиями файлов с серверов Центра обновления Windows.

Если восстановление прошло успешно, появится следующее сообщение:

The restore operation completed successfully.

https://ru.a-d.site/common-images/dism-cleanup-image-restorehealth/dism-online-cleanup-image-restorehealth-the-r.png

DISM /RestoreHealth: не удалось найти исходные файлы

Если ваш компьютер (сервер) не имеет прямого доступа в Интернет (расположен за прокси-сервером или использовал внутренний WSUS для получения обновлений безопасности и сборки) или служба Центра обновления Windows отключена/повреждена (как восстановить клиент Центра обновления Windows), то при восстановлении хранилища компонентов появляются следующие ошибки:

  • 0x800f0906 - не удалось загрузить исходные файлы. Используйте параметр источника, чтобы указать расположение файлов, необходимых для восстановления функции;
  • 0x800f0950 — ошибка DISM. Операция не проводилась;
  • 0x800F081F — не удалось найти исходные файлы. Используйте параметр «Источник», чтобы указать расположение файлов, необходимых для восстановления функции.

https://ru.a-d.site/common-images/dism-cleanup-image-restorehealth/dism-error-0x800f081f-the-source-files-could-not.png

Во всех этих случаях вы можете использовать альтернативные способы получения исходных файлов хранилища компонентов. Может быть:

  • Установочный диск/флешка/ISO образ;
  • Смонтированный файл wim/esd;
  • Папка \sources\SxS с установочного диска;
  • Файл install.wim (esd) с установочным образом Windows.

Вы можете указать файл WIM или ESD с исходным установочным образом Windows, который будет использоваться в качестве источника для восстановления системных файлов. Предположим, вы смонтировали установочный образ Windows 11 ISO на виртуальный диск D:.

Примечание. Чтобы восстановить поврежденные файлы в хранилище компонентов из локального источника, сборка и выпуск Windows в образе WIM/ESD должны соответствовать таковым в вашей системе.

Проверьте, какая версия Windows установлена на вашем компьютере, с помощью следующей команды PowerShell:

Get-ComputerInfo |select WindowsProductName,WindowsEditionId,WindowsVersion, OSDisplayVersion

https://ru.a-d.site/common-images/dism-cleanup-image-restorehealth/powershell-get-windows-edition-version.jpg

Перечислите доступные выпуски Windows в установочном wim-образе:

Get-WindowsImage -ImagePath "D:\sources\install.wim"

В нашем случае образ Windows 11 Pro в файле install.wim имеет

ImageIndex = 6

https://ru.a-d.site/common-images/dism-cleanup-image-restorehealth/powershell-get-windowsimage-index.jpg

Чтобы восстановить хранилище компонентов из локального файла WIM/ESD с использованием локальных исходных файлов (без использования онлайн-служб Центра обновления Windows), выполните следующую команду (не забудьте указать индекс версии Windows в файле образа):

DISM /online /cleanup-image /restorehealth /source:WIM:D:\sources\install.wim:6 /limitaccess

или:

DISM /online /cleanup-image /restorehealth /source:ESD:D:\sources\install.esd:6 /limitaccess

https://ru.a-d.site/common-images/dism-cleanup-image-restorehealth/dism-clenup-image-restorehealth-windows11.jpg

При выполнении команды DISM /RestoreHealth могут появиться следующие ошибки:

  • Ошибка: 50: DISM не поддерживает обслуживание Windows PE с параметром /Online — это означает, что ваш DISM считает, что вы используете образ WinPE. Чтобы это исправить, удалите раздел реестра

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MiniNT

    ;

  • Ошибка DISM 87: убедитесь, что команда DISM написана правильно, убедитесь, что вы используете версию DISM для вашей версии Windows (обычно при загрузке в WinPE/WinRE).

Вы можете найти журнал сканирования и восстановления системных файлов DISM здесь:

C:\Windows\Logs\CBS.log

После восстановления хранилища компонентов вы можете запустить средство проверки системных файлов (

sfc /scannow

). Вполне вероятно, что он сможет восстановить поврежденные или отсутствующие системные файлы (Защита ресурсов Windows обнаружила поврежденные файлы и успешно восстановила их).

https://ru.a-d.site/common-images/dism-cleanup-image-restorehealth/tool-sfc-scannow-windows-resource-protection-fo.png

Если SFC.exe не обнаружит повреждения системных файлов, появится сообщение

Windows Resource Protection did not find any integrity violations.

Repair-WindowsImage: восстановление хранилища компонентов образа Windows с помощью PowerShell

Версия PowerShell в Windows 10/11 и Windows Server 2016/2019/2022 имеет командлет, аналогичный командам DISM, рассмотренным выше. Чтобы просканировать хранилище компонентов Windows и найти любые повреждения, выполните следующую команду:

Repair-WindowsImage -Online -ScanHealth

https://ru.a-d.site/common-images/dism-cleanup-image-restorehealth/repair-windowsimage-online-scanhealth-powershell.png

Если в хранилище компонентов ошибок не обнаружено, появится следующее сообщение:

ImageHealth State: Healthy

Чтобы восстановить файлы хранилища компонентов Windows, запустите:

Repair-WindowsImage -Online -RestoreHealth

Если у вас нет прямого доступа в Интернет, эта команда может зависнуть в процессе восстановления образа. Вы можете восстановить системные компоненты из локального файла образа Windows (install.wim/install.esd), скопированного из установочного ISO-образа Windows 10. Здесь также нужно указать индекс версии Windows в wim-файле в качестве источника восстановления:

Repair-WindowsImage -Online -RestoreHealth -Source F:\sources\install.wim:5 -LimitAccess

Используйте DISM Offline для восстановления образа Windows

Если Windows загружается неправильно, вы можете использовать DISM для проверки и восстановления системных файлов вашего образа Windows в автономном режиме.

Если Windows не загружается после установки обновлений, попробуйте сначала удалить последние обновления в соответствии с руководством.

  1. Загрузите свое устройство с установочного образа Windows (вы можете использовать Media Creation Tool для создания загрузочного USB-накопителя Windows) и нажмите

    Shift + F10

    на начальном экране установки Windows;

  2. Чтобы проверить буквы дисков, назначенные в WinPE, выполните команду

    diskpart 

    ->

    list vol

    (в моем примере буква диска C:\ присвоена диску, на котором установлена Windows, и я буду использовать ее в следующих командах);

    https://ru.a-d.site/common-images/dism-cleanup-image-restorehealth/diskpart-get-assigned-drive-letters.png

  3. Проверьте системные файлы и восстановите поврежденные с помощью команды:

    sfc /scannow /offbootdir=C:\ /offwindir=C:\Windows

    https://ru.a-d.site/common-images/dism-cleanup-image-restorehealth/sfc-scannow-offline-offbootdir-offwindir.png

  4. Чтобы восстановить автономный образ Windows, используйте следующую команду (я использую WIM-файл с установочным образом Windows 10, с которого загружается компьютер, в качестве источника для восстановления моего автономного образа Windows):

    Dism /image:C:\ /Cleanup-Image /RestoreHealth /Source:D:\sources\install.wim

    https://ru.a-d.site/common-images/dism-cleanup-image-restorehealth/dism-cleanup-image-restore-offline-windows-10.png

  5. Если на целевом диске недостаточно свободного места, вам понадобится отдельный диск, например. г., F:\, на котором вы создадите пустую папку

    mkdir F:\scratch

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

    Dism /image:C:\ /Cleanup-Image /RestoreHealth /Source:D:\sources\install.wim /ScratchDir:F:\scratch

Совет. Вот некоторые полезные параметры DISM, которые должен знать администратор:

DISM /Add-Package

- установить файлы обновлений MSU/CAB, интегрировать обновления безопасности в ваш образ Windows;

DISM /Get-Drivers

- получить список установленных драйверов;

DISM /Add-Driver

- внедрить драйверы в установочный образ Windows;

DISM /Add-Capability

- установка дополнительных функций Windows через функции по запросу (FoD). Например, RSAT, сервер OpenSSH или клиент Windows SSH);

DISM /Enable-Features

и

/Disable-Features

- включение и отключение компонентов Windows (например, протокола SMBv1);

Dism.exe /StartComponentCleanup

- очистить Хранилище компонентов и удалить старые версии компонентов (из папки WinSxS);

Dism /set-edition

- обновление с ознакомительной до полной версии Windows без переустановки.