Поделиться через


Добавление скриптов расширяемости для сброса кнопок

Изготовители оборудования могут вставлять пользовательские скрипты, которые выполняются, когда пользователь запускает функции сброса кнопок: Сохранить мои файлы и Удалить все.

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

  • Меню "Пуск"
  • Панель задач
  • OOBE
  • настройки Unattend.xml

Кроме того, скрипты расширяемости могут помочь в выполнении других задач, таких как:

Примечание

Если вы включаете папки автоматического применения, не следует включать скрипты расширяемости. Если включить как папки автоматического применения, так и скрипты расширения, папки автоматического применения будут игнорироваться.

Сведения о добавлении скриптов расширяемости

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

Включение сценариев во время восстановления

Чтобы добавить скрипты 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.

Существует четыре точки расширяемости , которые можно использовать для указания сценариев, которые выполняются в начале и конце операций Сохранить мои файлы или Удалить все . Для распространенных настроек обычно требуется только один скрипт, как показано в примере сценария ниже.

Точки расширяемости

Функцию Сохранить мои файлы можно свести к следующим шагам:

  1. Компьютер загружается в среду восстановления Windows (Windows RE).
  2. ТОЧКА РАСШИРЯЕМОСТИ A (BasicReset_BeforeImageApply). Добавьте здесь скрипт для копирования файлов, драйверов или параметров, которые не переносятся по умолчанию, когда пользователь запускает функцию Сохранить мои файлы .
  3. Учетные записи пользователей, параметры и данные собираются и перемещаются во временное расположение.
  4. Новая копия ОС создается во временном расположении с помощью файлов из хранилища компонентов Windows.
  5. Настройки, хранящиеся в пакетах подготовки в разделе C:\Recovery\Customizations, применяются к новой ОС.
  6. Драйверы копируются из существующей ОС и внедряются в новую ОС.
  7. Предустановленные приложения Windows восстанавливаются из расположения резервной копии.
  8. Критические системные параметры применяются к новой ОС.
  9. Существующая ОС перемещается в папку C:\Windows.old.
  10. Новая ОС перемещается в корень тома ОС.
  11. ТОЧКА РАСШИРЯЕМОСТИ B (BasicReset_AfterImageApply). Добавьте здесь скрипт для восстановления файлов настройки (unattend.xml, layoutmodification.xml) или восстановления файлов и параметров, резервные копии которых можно было создать в точке расширяемости A.
  12. Компьютер перезагружается до новой ОС.
  13. Во время первой загрузки данные и параметры пользователя применяются повторно.

Функцию Удалить все можно свести к следующему этапу:

  1. Компьютер загружается в среду восстановления Windows (Windows RE).
  2. Учетные записи пользователей, данные и установленные приложения Windows и классические приложения Windows удаляются из тома ОС.
  3. Тома данных форматируются (по запросу пользователя).
  4. Стирание данных выполняется в ос и томах данных (по запросу пользователя).
  5. EXTENSIBILITY POINT C (FactoryReset_AfterDiskFormat). Добавьте здесь скрипт, чтобы при необходимости перенастроить секции данных. Важно! Не изменяйте раздел Windows.
  6. Новая копия ОС создается во временном расположении с помощью файлов из хранилища компонентов Windows.
  7. Настройки, хранящиеся в пакетах подготовки в разделе C:\Recovery\Customizations, применяются к новой ОС.
  8. Драйверы копируются из существующей ОС и внедряются в новую ОС.
  9. Предустановленные универсальные приложения для Windows восстанавливаются из расположения резервной копии.
  10. Существующая ОС удалена.
  11. Новая ОС перемещается в корень тома ОС.
  12. ТОЧКА РАСШИРЕНИЯ D (FactoryReset_AfterImageApply). Добавьте здесь скрипт для восстановления файлов настройки (unattend.xml, layoutmodification.xml).
  13. Компьютер перезагружается до новой ОС.
  14. Запуск запуска при первом включении компьютера.

Пример. Восстановление настроек меню "Пуск", панели задач, 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

Параметры Command-Line REAgentC

Справочник по XML ResetConfig