Добавление скриптов расширяемости для сброса кнопок
Изготовители оборудования могут вставлять пользовательские скрипты, которые выполняются, когда пользователь запускает функции сброса кнопок: Сохранить мои файлы и Удалить все.
Вы можете использовать скрипты расширяемости или папки автоматического применения для восстановления общих настроек, которые иначе не были восстановлены, в том числе:
- Меню "Пуск"
- Панель задач
- OOBE
- настройки Unattend.xml
Кроме того, скрипты расширяемости могут помочь в выполнении других задач, таких как:
- Изменение разделов данных или служебных программ
- Сохранение и восстановление файлов , которые обычно не хранятся с помощью функции Сохранить мои файлы .
Примечание
Если вы включаете папки автоматического применения, не следует включать скрипты расширяемости. Если включить как папки автоматического применения, так и скрипты расширения, папки автоматического применения будут игнорироваться.
Сведения о добавлении скриптов расширяемости
Чтобы добавить скрипты extensibilty, необходимо понимать следующие понятия:
- Точки расширяемости — различные точки во время процесса сброса кнопки, в которых можно запускать пользовательские скрипты.
- Скрипты расширяемости — скрипты, которые выполняются в определенной точке расширяемости.
- Файл конфигурации сброса кнопок (ResetConfig.xml) — файл, определяющий, какие скрипты будут выполняться в разных точках расширяемости.
Включение сценариев во время восстановления
Чтобы добавить скрипты extensibilty в push-button reset, добавьте в папку C:\Recovery\OEM
все следующие компоненты:
- Файл конфигурации сброса кнопок (ResetConfig.xml), определяющий выполняемые скрипты.
- Скрипты расширяемости
- Все файлы, необходимые для скриптов расширяемости.
Скрипты расширяемости
Требования.
- Скрипты форматируются как CMD-файлы или .exe файлы.
- Скрипты не зависят от необязательных компонентов Среды предустановки Windows, которые отсутствуют в образе Windows RE по умолчанию (winre.wim).
- Скрипты не зависят от двоичных файлов (например, .exe или .dll файлов), которые отсутствуют в образе Windows RE по умолчанию (winre.wim).
- Скрипты выполняются без отображения графического пользовательского интерфейса (GUI).
- Скрипты выполняют все предполагаемые функции в течение 5 минут для каждой точки расширяемости.
- Скрипт не должен изменять буквы диска. Это может привести к сбою восстановления.
- В случае успешного выполнения скрипт должен возвращать
0
значение (ноль). Если при нажатии кнопки сброс получает значение, отличное от 0, выполняются следующие действия.- При запуске функции Сохранить мои файлы : откатываются все системные изменения. Если скрипт или исполняемый файл инициируется из меню параметров компьютера с Windows, система перезагружается в Windows. Если скрипт или исполняемый файл инициируется из Windows RE или меню дополнительного запуска, система остается в Windows RE и отображает сообщение об ошибке.
- При запуске функции Удалить все : сбой игнорируется. Сценарий или исполняемый файл переходит к следующему шагу в процессе сброса и регистрирует сбой.
Файл конфигурации для сброса push-кнопки (ResetConfig.xml)
Добавьте файл ResetConfig.xml , указывающий на скрипты расширения для сброса кнопок.
Этот файл должен быть сохранен с типом UTF-8. Не используйте кодирование ANSI. Например, в Блокноте щелкните Файл, а затем нажмите кнопку Сохранить как. В поле Кодировка выберите UTF-8.
Сохраните этот файл и скопируйте его в образы Windows как C:\Recovery\OEM\ResetConfig.xml
.
Вы можете использовать тот же файл ResetConfig.xml, чтобы настроить Windows для создания носителя для восстановления. Дополнительные сведения см. в статье Развертывание функций сброса Push-Button.
Существует четыре точки расширяемости , которые можно использовать для указания сценариев, которые выполняются в начале и конце операций Сохранить мои файлы или Удалить все . Для распространенных настроек обычно требуется только один скрипт, как показано в примере сценария ниже.
Точки расширяемости
Функцию Сохранить мои файлы можно свести к следующим шагам:
- Компьютер загружается в среду восстановления Windows (Windows RE).
- ТОЧКА РАСШИРЯЕМОСТИ A (BasicReset_BeforeImageApply). Добавьте здесь скрипт для копирования файлов, драйверов или параметров, которые не переносятся по умолчанию, когда пользователь запускает функцию Сохранить мои файлы .
- Учетные записи пользователей, параметры и данные собираются и перемещаются во временное расположение.
- Новая копия ОС создается во временном расположении с помощью файлов из хранилища компонентов Windows.
- Настройки, хранящиеся в пакетах подготовки в разделе C:\Recovery\Customizations, применяются к новой ОС.
- Драйверы копируются из существующей ОС и внедряются в новую ОС.
- Предустановленные приложения Windows восстанавливаются из расположения резервной копии.
- Критические системные параметры применяются к новой ОС.
- Существующая ОС перемещается в папку C:\Windows.old.
- Новая ОС перемещается в корень тома ОС.
- ТОЧКА РАСШИРЯЕМОСТИ B (BasicReset_AfterImageApply). Добавьте здесь скрипт для восстановления файлов настройки (unattend.xml, layoutmodification.xml) или восстановления файлов и параметров, резервные копии которых можно было создать в точке расширяемости A.
- Компьютер перезагружается до новой ОС.
- Во время первой загрузки данные и параметры пользователя применяются повторно.
Функцию Удалить все можно свести к следующему этапу:
- Компьютер загружается в среду восстановления Windows (Windows RE).
- Учетные записи пользователей, данные и установленные приложения Windows и классические приложения Windows удаляются из тома ОС.
- Тома данных форматируются (по запросу пользователя).
- Стирание данных выполняется в ос и томах данных (по запросу пользователя).
- EXTENSIBILITY POINT C (FactoryReset_AfterDiskFormat). Добавьте здесь скрипт, чтобы при необходимости перенастроить секции данных. Важно! Не изменяйте раздел Windows.
- Новая копия ОС создается во временном расположении с помощью файлов из хранилища компонентов Windows.
- Настройки, хранящиеся в пакетах подготовки в разделе C:\Recovery\Customizations, применяются к новой ОС.
- Драйверы копируются из существующей ОС и внедряются в новую ОС.
- Предустановленные универсальные приложения для Windows восстанавливаются из расположения резервной копии.
- Существующая ОС удалена.
- Новая ОС перемещается в корень тома ОС.
- ТОЧКА РАСШИРЕНИЯ D (FactoryReset_AfterImageApply). Добавьте здесь скрипт для восстановления файлов настройки (unattend.xml, layoutmodification.xml).
- Компьютер перезагружается до новой ОС.
- Запуск запуска при первом включении компьютера.
Пример. Восстановление настроек меню "Пуск", панели задач, OOBE и unattend.xml
Ниже приведен пример скрипта и пример файла ResetConfig.xml, которые работают вместе для восстановления распространенных настроек во время сброса кнопки на Windows 11. С помощью этих примеров можно протестировать восстановление с помощью кнопки. Чтобы выполнить тестирование с помощью этих примеров, выполните следующие действия.
- Сохраните в папку следующее
C:\Recovery\OEM
:- Пример скрипта CommonCustomizations.cmd
- Файл конфигурации сброса кнопок ResetConfig.xml
- Копия файла конфигурации меню "Пуск" (LayoutModification.json)
- Копия файла конфигурации панели задач (TaskbarLayoutModification.xml)
- Копия файла unattend.xml
Ниже приведен пример скрипта и пример файла ResetConfig.xml, которые работают вместе для восстановления общих настроек во время сброса кнопки на Windows 10. С помощью этих примеров можно протестировать восстановление с помощью кнопки. Чтобы выполнить тестирование с помощью этих примеров, выполните следующие действия.
- Сохраните в папку следующее
C:\Recovery\OEM
:- Пример скрипта CommonCustomizations.cmd
- Файл конфигурации сброса кнопок ResetConfig.xml
- Копия файла конфигурации меню "Пуск" (LayoutModification.xml)
- Копия файла конфигурации панели задач (TaskbarLayoutModification.xml)
- Копия файлаunattend.xml
- Скопируйте всю папку OOBE и ее вложенные
%WINDIR%\System32\Oobe\Info\
папки вC:\Recovery\OEM\OOBE\Info
.
CommonCustomizations.cmd
Этот файл копирует файлы настройки из папки Восстановления в восстановленную ОС.
rem CommonCustomizations.cmd
rem Define %TARGETOS% as the Windows folder (This later becomes C:\Windows)
for /F "tokens=1,2,3 delims= " %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RecoveryEnvironment" /v TargetOS') DO SET TARGETOS=%%C
rem Define %TARGETOSDRIVE% as the Windows partition (This later becomes C:)
for /F "tokens=1 delims=\" %%A in ('Echo %TARGETOS%') DO SET TARGETOSDRIVE=%%A
rem Add back Windows settings, Start menu, Taskbar, and OOBE.xml customizations
copy "%TARGETOSDRIVE%\Recovery\OEM\Unattend.xml" "%TARGETOS%\Panther\Unattend.xml" /y
copy "%TARGETOSDRIVE%\Recovery\OEM\LayoutModification.json" "%TARGETOSDRIVE%\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.json" /y
copy "%TARGETOSDRIVE%\Recovery\OEM\TaskbarLayoutModification.xml" "%TARGETOS%\OEM\TaskbarLayoutModification.xml" /y
xcopy "%TARGETOSDRIVE%\Recovery\OEM\OOBE\Info" "%TARGETOS%\System32\Oobe\Info\" /s
rem Recommended: Create a pagefile for devices with 1GB or less of RAM.
wpeutil CreatePageFile /path=%TARGETOSDRIVE%\PageFile.sys /size=256
EXIT 0
rem CommonCustomizations.cmd
rem Define %TARGETOS% as the Windows folder (This later becomes C:\Windows)
for /F "tokens=1,2,3 delims= " %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RecoveryEnvironment" /v TargetOS') DO SET TARGETOS=%%C
rem Define %TARGETOSDRIVE% as the Windows partition (This later becomes C:)
for /F "tokens=1 delims=\" %%A in ('Echo %TARGETOS%') DO SET TARGETOSDRIVE=%%A
rem Add back Windows settings, Start menu, Taskbar, and OOBE.xml customizations
copy "%TARGETOSDRIVE%\Recovery\OEM\Unattend.xml" "%TARGETOS%\Panther\Unattend.xml" /y
copy "%TARGETOSDRIVE%\Recovery\OEM\LayoutModification.xml" "%TARGETOSDRIVE%\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml" /y
copy "%TARGETOSDRIVE%\Recovery\OEM\TaskbarLayoutModification.xml" "%TARGETOS%\OEM\TaskbarLayoutModification.xml" /y
xcopy "%TARGETOSDRIVE%\Recovery\OEM\OOBE\Info" "%TARGETOS%\System32\Oobe\Info\" /s
rem Recommended: Create a pagefile for devices with 1GB or less of RAM.
wpeutil CreatePageFile /path=%TARGETOSDRIVE%\PageFile.sys /size=256
EXIT 0
ResetConfig.xml
Примечание
Этот пример дважды указывает на один и тот же скрипт, поэтому его могут использовать функции Сохранить мои файлы или Удалить все .
<?xml version="1.0" encoding="utf-8"?>
<!-- ResetConfig.xml -->
<Reset>
<Run Phase="BasicReset_AfterImageApply">
<Path>CommonCustomizations.cmd</Path>
<Duration>2</Duration>
</Run>
<Run Phase="FactoryReset_AfterImageApply">
<Path>CommonCustomizations.cmd</Path>
<Duration>2</Duration>
</Run>
<!-- May be combined with Recovery Media Creator
configurations – insert SystemDisk element here -->
</Reset>
Сохранение и получение файлов
С помощью функции Сохранить мои файлы можно использовать примеры скриптов для сохранения файлов, которые в противном случае были бы удалены, поместив их во временное расположение в памяти. Вы не можете хранить файлы с помощью функции Удалить все .
При необходимости для хранения можно использовать следующие расположения.
ОЗУ Windows PE (X:). Этот виртуальный диск создается с помощью Среды предустановки Windows и остается активным во время процесса Сохранения файлов . Его можно использовать с функцией Сохранить файлы для сохранения данных перед обновлением секции и восстановления данных после завершения обновления секции. Объем доступной памяти ограничен объемом ОЗУ в системе за вычетом объема ОЗУ, необходимого для Windows RE инструментов при полном развертывании. Инструкции по подключению Windows RE и определению размера полностью развернутого файла см. в статье Настройка Windows RE.
Назначенный раздел OEM. Вы можете оставить дополнительное место в секции. Например, можно оставить место в разделе образа восстановления и использовать скрипты, чтобы временно назначить букву диска, а затем сохранить файлы в этой секции. Однако если пользователь использует носитель для восстановления для повторного секционирования дисков, данные в этих разделах могут быть потеряны в процессе восстановления.
В этих примерах скриптов сохраняются файлы журнала Windows. Сохраните эти скрипты в папке C:\Recovery\OEM
.
Пример ResetConfig.xml, сохраняющий файлы
<?xml version="1.0" encoding="utf-8"?>
<!-- ResetConfig.xml -->
<Reset>
<Run Phase="BasicReset_BeforeImageApply">
<Path>SaveLogFiles.cmd</Path>
<Duration>4</Duration>
</Run>
<Run Phase="BasicReset_AfterImageApply">
<Path>RetrieveLogFiles.cmd</Path>
<Duration>2</Duration>
</Run>
<!-- May be combined with Recovery Media Creator
configurations – insert SystemDisk element here -->
</Reset>
Пример скрипта расширяемости, сохраняющего файлы
SaveLogFiles.cmd: сохраняет файлы журнала во временной папке в памяти.
:rem == SaveLogFiles.cmd
:rem == 1. Use the registry to identify the location of
:rem the new operating system and the primary hard
:rem drive. For example,
:rem %TARGETOS% may be defined as C:\Windows
:rem %TARGETOSDRIVE% may be defined as C:
for /F "tokens=1,2,3 delims= " %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RecoveryEnvironment" /v TargetOS') DO SET TARGETOS=%%C
for /F "tokens=1 delims=\" %%A in ('Echo %TARGETOS%') DO SET TARGETOSDRIVE=%%A
:rem == 2. Copy old Windows logs to a temporary folder in memory
mkdir X:\Temp
xcopy %TARGETOS%\Logs\*.* X:\temp\OldLogs /cherkyi
EXIT 0
Пример скрипта расширяемости, который извлекает файлы
RetrieveLogFiles.cmd: извлекает файлы, сохраненные в памяти с помощью скрипта SaveLogFiles.cmd.
:rem == RetrieveLogFiles.cmd
:rem == This sample script retrieves the files that
:rem were saved in memory by
:rem SaveLogFiles.cmd,
:rem and adds them back to the system.
:rem == 1. Use the registry to identify the location of
:rem the new operating system and the primary drive.
:rem
:rem %TARGETOS% is the Windows folder
:rem (This later becomes C:\Windows)
:rem %TARGETOSDRIVE% is the Windows partition
:rem (This later becomes C:)
for /F "tokens=1,2,3 delims= " %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RecoveryEnvironment" /v TargetOS') DO SET TARGETOS=%%C
for /F "tokens=1 delims=\" %%A in ('Echo %TARGETOS%') DO SET TARGETOSDRIVE=%%A
:rem == 2. Copy the old logs to the new OS
:rem at C:\Windows\OldLogs
mkdir %TARGETOS%\OldLogs
xcopy X:\Temp\OldLogs\* %TARGETOS%\OldLogs /cherkyi
EXIT 0
Альтернативный метод: копирование скриптов после развертывания
Через некоторое время после завершения запуска при первом запуске скрипты восстановления перемещаются из C:\Recovery\OEM
папки в раздел восстановления по адресу R:\RecoveryImage\
.
В маловероятном случае, если до выполнения этой операции используется сброс кнопок, эти скрипты могут не выполняться. Чтобы избежать этой возможности, можно скопировать файлы восстановления непосредственно в раздел R:\RecoveryImage\
восстановления после развертывания образа.
Дальнейшие действия
Теперь, когда вы настроили процесс сброса кнопок, можно развернуть образ восстановления для сброса кнопок (Install.wim) в разделе образа восстановления.
Чтобы скопировать скрипт Diskpart, файл ResetConfig.xml и образ восстановления с помощью кнопки (install.wim) в раздел образа восстановления конечного компьютера, следуйте инструкциям в разделе Развертывание компонентов сброса Push-Button .
Связанные темы
Общие сведения о сбросе кнопок
Создание носителя для запуска функций сброса Push-Button
Развертывание функций сброса Push-Button