部署一键重置功能
Windows 10 和 Windows 11 桌面版(家庭版、专业版、企业版和教育版)包含一键重置功能,但需要执行其他步骤以使用以下自定义项来部署电脑:
- Windows 桌面应用程序
- Windows 设置,例如自定义 OOBE 屏幕或开始菜单。
- 自定义分区布局。
这些步骤还演示如何在重置期间添加自己的脚本,以捕获日志或执行其他清理任务。
先决条件
若要完成以下步骤,你需要一台配备 Windows 评估和部署工具包 (ADK) 和 WinPE 加载项的技术人员电脑。 安装 ADK 时,请选择以下选项:
- 部署工具
- 映像和配置设计器 (ICD)
- 用户状态迁移工具 (USMT)
还需要:
- 驱动器大小至少为 100 GB 的目标电脑
- Windows 10 或 Windows 11 桌面版映像 (install.wim)
- Windows RE 启动映像 (Winre.wim)(将从 Windows 安装映像中提取)。
有关整个部署过程的概述,请参阅桌面制造指南。
使用以下步骤准备 ScanState 工具,以在安装 Windows 桌面应用程序之后捕获这些应用程序:
步骤 1:准备 ScanState 工具
在技术人员电脑上,将 Windows 用户状态迁移工具 (USMT) 中的 Windows ADK 文件和 Windows 安装程序复制到工作文件夹。 需要匹配目标设备的体系结构。 无需复制子文件夹。
md C:\ScanState_amd64 xcopy /E "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\User State Migration Tool\amd64" C:\ScanState_amd64 xcopy /E /Y "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Setup\amd64\Sources" C:\ScanState_amd64
将工作文件夹的内容复制到网络位置或 USB 闪存驱动器。
如果需要其他驱动程序和语言包,请使用以下步骤自定义 Windows RE 启动映像。
步骤 2:提取和自定义 Windows RE 启动映像(可选)
在技术人员电脑上,单击“开始”,然后键入“部署”。 右键单击部署和映像工具环境,然后选择以管理员身份运行。
在“部署和映像工具环境”中,创建文件夹结构以存储 Windows 映像及其装入点。
Mkdir C:\OS_image\mount
创建文件夹结构以存储 Windows RE 启动映像及其装入点。
Mkdir C:\winre_amd64\mount
使用 DISM 将 Windows 映像 (install.wim) 装载到文件夹 \OS_image\mount。
Dism /mount-image /imagefile:C:\OS_image\install.wim /index:1 /mountdir:C:\OS_image\mount
其中
Index:1
是 Install.wim 文件中所选映像的索引。将 Windows RE 映像从装载的 Windows 映像复制到新文件夹。
xcopy /H C:\OS_image\mount\windows\system32\recovery\winre.wim C:\winre_amd64
卸载 Windows 映像。 提示:如果尚未对 Windows 映像进行任何其他更改,可以使用
/discard
选项更快地卸载映像。Dism /unmount-image /mountdir:C:\OS_image\mount /discard
装载 Windows RE 启动映像进行编辑。
Dism /mount-image /imagefile:C:\winre_amd64\winre.wim /index:1 /mountdir:C:\winre_amd64\mount
其中
Index:1
是 Winre.wim 文件中所选映像的编号。从 Install.wim 文件中提取 Winre.wim 文件后,可以自定义 Windows RE 启动映像。
将语言包、启动关键型设备驱动程序和输入设备驱动程序添加到Windows RE 启动映像。 若要了解详细信息,请参阅自定义 Windows RE。
提交自定义项并卸载映像。
Dism /unmount-image /mountdir:C:\winre_amd64\mount /commit
如果计划仅自定义通用于 Windows 10 所有版本(包括 Windows 10 移动版)的设置,请使用以下步骤创建一个预配程序包,用于指定恢复期间要还原的设置:
步骤 3:(可选)创建包含要还原的设置的预配程序包
- 在技术人员电脑上,启动 Windows 映像和配置设计器 (ICD)。
- 单击“文件”>“新建项目”。
- 输入项目名称和说明,然后单击“下一步”
- 在“选择项目工作流”步骤中,选择“预配程序包”选项,然后单击“下一步”。
- 在“选择要查看和配置的设置”步骤中,选择“通用于所有 Windows 版本”选项,然后单击“下一步”。
- 在“导入预配程序包(可选)”步骤中,单击“完成”以创建新项目。
- 使用“可用自定义项”窗格添加设置,并指定应在恢复期间还原的默认值。 设置将显示在“选定的自定义项”窗格中。
- 单击“导出”>“预配程序包”。
- 在“描述预配程序包”步骤中,单击“下一步”。
- 在“选择预配程序包的安全性详细信息”步骤中,单击“下一步”。
- 在“选择要保存预配程序包的位置”步骤中,输入保存包的位置(例如网络共享),然后单击“下一步”。
- 单击“生成”以创建预配程序包。
- 创建预配程序包后,单击“完成”。
如果自定义项包含特定于 Windows 10 桌面版的设置,请使用以下步骤创建 unattend.xml,该文件用于指定恢复期间要还原的设置:
步骤 4:(可选)创建无人参与文件以还原设置
- 在技术人员电脑上,启动“Windows 系统映像管理器”。
- 单击“文件”>“选择 Windows 映像”。
- 系统提示创建目录文件时,单击“是”。
- 使用“Windows 映像”和“答案文件”窗格将设置添加到“专用化”或“oobeSystem”阶段(或同时两者),并指定应在恢复期间还原的默认值。
- 单击“工具”>“验证答案文件”以检查错误。 更正确认的任何问题。
- 单击“文件”>“保存答案文件”。 输入用于保存答案文件的位置(例如网络共享),然后单击“保存”。
如果计划使用一键重置的扩展点,请使用以下步骤准备扩展点,并使用一键重置配置文件注册它们。
重要
如果创建了一个无人参与文件,则还必须创建脚本以使用 BasicReset_AfterImageApply
和 FactoryReset_AfterImageApply
扩展点重新应用该文件。
步骤 5:(可选)准备一键重置扩展点脚本
创建脚本 (.cmd) 或可执行文件 (.exe),以在“保留我的文件”功能运行时在可用扩展点上运行:
- A:在 BasicReset_BeforeImageApply 上
- B:在 BasicReset_AfterImageApply 上
创建脚本 (.cmd) 或可执行文件 (.exe),以在“删除所有内容”功能运行时在可用扩展点上运行:
- C:在 FactoryReset_AfterDiskFormat 上
- D:在 FactoryReset_AfterImageApply 上
将脚本保存到网络位置或 USB 闪存驱动器。
创建 ResetConfig.xml 文件,该文件用于指定为这四个扩展点创建的脚本的位置。 例如:
<?xml version="1.0" encoding="utf-8"?> <Reset> <Run Phase="BasicReset_BeforeImageApply"> <Path>Fabrikam\SampleScript_A.cmd</Path> <Duration>2</Duration> </Run> <Run Phase="BasicReset_AfterImageApply"> <Path>Fabrikam\SampleScript_B.cmd</Path> <Param></Param> <Duration>2</Duration> </Run> <Run Phase="FactoryReset_AfterDiskFormat"> <Path>Fabrikam\SampleScript_C.cmd</Path> <Duration>2</Duration> </Run> <Run Phase="FactoryReset_AfterImageApply"> <Path>Fabrikam\SampleScript_D.cmd</Path> <Param></Param> <Duration>2</Duration> </Run> </Reset>
将 ResetConfig.xml 文件与创建的脚本一起保存。
步骤 6:(可选)创建裸机恢复配置
若要指定当用户使用从电脑创建的恢复媒体执行裸机恢复时要使用的分区布局,请修改 resetconfig.xml 以包含以下元素:
<?xml version="1.0" encoding="utf-8"?> <Reset> <SystemDisk> <MinSize>160000</MinSize> <DiskpartScriptPath>ReCreatePartitions.txt</DiskpartScriptPath> <OSPartition>3</OSPartition> <WindowsREPartition>4</WindowsREPartition> <WindowsREPath>Recovery\WindowsRE</WindowsREPath> <Compact>False</Compact> </SystemDisk> </Reset>
<MinSize>
- 指定系统磁盘的最小大小(以兆字节 (MB) 为单位)。 如果系统磁盘不符合此最小大小要求,则恢复过程将不会继续。<DiskpartScriptPath>
- 相对于 install.wim 位置的 Diskpart 脚本的路径。 该脚本应假定已删除所有现有分区,且系统磁盘在 Diskpart 中有焦点。<OSPartition>
- 必须指定应应用恢复映像的分区。 ESP 或活动分区必须与 OS 位于同一磁盘上。<WindowsREPartition>
;<WindowsREPath>
(可选)应暂存 WinRE 的位置。 将复制媒体上的 WinRE 启动映像并向操作系统注册。 (与运行reagentc.exe /setreimage
相同)
如果未在 resetconfig.xml 中指定分区信息,用户仍可以使用他们创建的媒体执行裸机恢复。 但是,将改用 Windows 10 的默认/建议分区布局。
步骤 7:创建用于初始部署的 diskpart 脚本
创建用于初始部署的磁盘分区脚本。
UEFI 示例:
rem These commands are used with DiskPart tool. rem Erase the drive and create four partitions rem for a UEFI/GPT-based PC. select disk 0 clean convert gpt rem == 1. System Partition ======================= create partition efi size=100 rem ***NOTE: For 4KB-per-sector drives, change rem this value to size=260.*** format quick fs=fat32 label="System" assign letter="S" rem == 2. Microsoft Reserved (MSR) Partition ===== create partition msr size=16 rem == 3. Windows Partition ====================== rem == a. Create Windows Partition ============ create partition primary rem == b. Create space for Windows RE tools partition shrink minimum=450 rem == c. Prepare the Windows partition format quick fs=ntfs label="Windows" assign letter="W" rem == 4. Windows RE Tools Partition ============= create partition primary format quick fs=ntfs label="Windows RE tools" set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac assign letter="T" exit
BIOS 示例:
rem These commands are used with DiskPart to rem erase the drive and create three partitions rem for a BIOS/MBR-based PC. rem Adjust the partition sizes to fill the drive. select disk 0 clean rem === 1. System Partition ===================== create partition primary size=100 format quick fs=ntfs label="System" assign letter="S" active rem === 2. Windows Partition ==================== rem == a. Create Windows partition =========== create partition primary rem == b. Create space for Windows RE tools partition ==== shrink minimum=450 rem == c. Prepare the Windows partition ====== format quick fs=ntfs label="Windows" assign letter="W" rem === 3. Windows RE Tools Partition ============= create partition primary format quick fs=ntfs label="Windows RE tools" set id=27 assign letter="R" exit
将脚本命名为 CreatePartitions-UEFI 或 CreatePartitions-BIOS.txt,并将其保存到网络位置或 USB 闪存驱动器。 注意:在这些 Diskpart 示例中,为分区分配字母 S:\、W:\ 和 T:\ 以简化分区标识。 电脑重启后,Windows PE 自动为 Windows 分区分配字母 C:\。 其他分区不接收驱动器号。
步骤 8:为裸机恢复创建 diskpart 脚本(可选)
为裸机恢复创建 diskpart 脚本。
重要
用于裸机恢复的 diskpart 脚本不应包含
select disk
或clean
命令。 处理 diskpart 脚本之前将自动选择系统磁盘。 为了避免由于分区大小的原因造成裸机恢复启动问题,建议制造商允许裸机恢复功能的自动生成脚本创建用于恢复 WIM 的分区。 如果制造商希望使用自定义的 DISKPART 脚本来创建分区,则建议的最小分区大小为 990MB,最小可用空间为 250MB。UEFI 示例:
rem These commands are used with DiskPart tool. rem Erase the drive and create five partitions rem for a UEFI/GPT-based PC. convert gpt rem == 1. System Partition ======================= create partition efi size=100 rem ***NOTE: For 4KB-per-sector drives, change rem this value to size=260.*** format quick fs=fat32 label="System" assign letter="S" rem == 2. Microsoft Reserved (MSR) Partition ===== create partition msr size=16 rem == 3. Windows Partition ====================== rem == a. Create Windows Partition ============ create partition primary rem == b. Create space for Windows RE tools partition shrink minimum=450 rem == c. Prepare the Windows partition format quick fs=ntfs label="Windows" assign letter="W" rem == 4. Windows RE Tools Partition ============= create partition primary format quick fs=ntfs label="Windows RE tools" set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac assign letter="T" exit
BIOS 示例:
rem These commands are used with DiskPart to rem erase the drive and create three partitions rem for a BIOS/MBR-based PC. rem Adjust the partition sizes to fill the drive. rem === 1. System Partition ===================== create partition primary size=100 format quick fs=ntfs label="System" assign letter="S" active rem === 2. Windows Partition ==================== rem == a. Create Windows partition =========== create partition primary rem == b. Create space for Windows RE tools partition ==== shrink minimum=450 rem == c. Prepare the Windows partition ====== format quick fs=ntfs label="Windows" assign letter="W" rem === 3. Windows RE Tools Partition ============= create partition primary format quick fs=ntfs label="Windows RE tools" set id=27 assign letter="R" exit
将脚本命名为 RecreatePartitions-UEFI.txt 或 RecreatePartitions-BIOS.txt,并将其保存到与创建分区相同的网络位置或 USB 闪存驱动器。
步骤 9:部署并自定义 Windows
在目标电脑上,启动到 Windows PE。
在 Windows PE 命令提示符下,运行脚本以创建建议的硬盘驱动器分区。
Diskpart /s N:\CreatePartitions.txt
其中
N:\CreatePartition
是文件的位置。将 Windows 参考映像应用于 Windows 分区。
Dism /Apply-Image /ImageFile:N:\Install.wim /Index:1 /ApplyDir:W:\
可选:还可以指定 /compact 选项,以便压缩写入磁盘的文件。 例如:
Dism /Apply-Image /ImageFile:N:\Install.wim /Index:1 /ApplyDir:W:\ /Compact:on
如果要在存储容量有限的电脑上部署 Windows,则此选项很有用,但不建议在具有机械旋转式存储设备的电脑上使用此选项。
使用 BCDboot 配置系统分区。
W:\Windows\System32\Bcdboot W:\Windows
在 Windows RE 工具分区中创建文件夹,并向其复制自定义 Windows RE 启动映像。
Mkdir T:\Recovery\WindowsRE xcopy /H N:\Winre.wim T:\Recovery\WindowsRE
其中,T:\ 是 Windows RE 工具分区。
重要
必须将 Winre.wim 存储在 \Recovery\WindowsRE 中。
将 Windows RE 启动映像与 Windows 映像一起注册。
W:\Windows\System32\Reagentc /setreimage /path T:\Recovery\WindowsRE /target W:\Windows
使用 Diskpart 隐藏 Windows RE 工具 (T:\) 分区,使之不显示在 Windows 资源管理器中。
对于基于 UEFI 的电脑:
select disk 0 select partition 4 remove set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac gpt attributes=0x8000000000000001 exit
对于基于 BIOS 的电脑:
select disk 0 select partition 3 remove set id=27 exit
在目标电脑上自定义 Windows 映像:
- 对 Windows 映像执行脱机自定义,例如安装特定于目标电脑的基于 INF 的驱动程序包、安装操作系统更新和语言包,或预配其他 Windows 应用。
- 将目标电脑启动至审核模式。 这可以通过将答案文件与“Microsoft-Windows-Deployment | Reseal | Mode = audit”设置一起使用,或先将电脑启动至 OOBE,然后按 CTRL+SHIFT+F3 来实现。
- 执行任何剩余自定义项,例如安装特定于目标电脑的应用程序和设备软件包。
清理映像:
DISM.exe /Cleanup-Image /StartComponentCleanup
步骤 10:捕获并部署用于恢复的自定义项
创建 C:\Recovery 文件夹。 使用以下命令确保此文件夹正确配置了正确的权限和 ACL。
mkdir C:\Recovery icacls C:\Recovery /inheritance:r icacls C:\Recovery /grant:r SYSTEM:(OI)(CI)(F) icacls C:\Recovery /grant:r *S-1-5-32-544:(OI)(CI)(F) takeown /f C:\Recovery /a attrib +H C:\Recovery
使用 ScanState 工具将已安装的自定义项捕获到预配程序包中。 使用 /config 选项指定 ADK 中包含的其中一个默认配置文件,然后将 .ppkg 文件保存在文件夹 C:\Recovery\Customizations 中。
N:\ScanState_amd64\scanstate.exe /apps /config:<path_to_config_file> /ppkg C:\Recovery\Customizations\apps.ppkg /o /c /v:13 /l:C:\ScanState.log
其中 N:\ 是步骤 1 中安装的 ScanState 工具的位置。
如果已使用 Windows ICD 创建附加预配程序包,且此包包含应在恢复期间还原的自定义项,则将此包复制到目标电脑。 例如:
xcopy N:\RecoveryPPKG\*.ppkg C:\Recovery\Customizations
其中 N:\ 是附加预配包所在的位置。
将所有一键重置配置文件 (resetconfig.xml) 和扩展性脚本复制到目标电脑,然后配置写入/修改它们的权限。 例如:
mkdir C:\Recovery\OEM xcopy /E N:\RecoveryScripts\* C:\Recovery\OEM
其中 N:\ 是配置文件和脚本所在的位置。
使用 Sysprep 工具重新封装 Windows 映像,而不使用 /generalize 选项。
Sysprep /oobe /exit
重要
必须将要交付给客户的映像配置为启动至 OOBE。
(可选)若要节省空间,还可以将已安装的 Windows 桌面应用程序转换为引用自定义项包的文件指针。 为此,请将目标电脑启动至 Windows PE 并运行以下代码:
DISM /Apply-CustomDataImage /CustomDataImage:C:\Recovery\Customizations\USMT.ppkg /ImagePath:C:\ /SingleInstance
关闭目标电脑,以便打包并交付。 用户首次启动电脑时,它将启动到 OOBE。
步骤 11:验证自定义项
运行“保留我的文件”和“删除所有内容”功能,验证自定义项在恢复后是否已还原并可继续正常运行。 若要开始,请检查以下入口点:
设置:在“开始”菜单中选择设置>更新和安全>恢复>重置此电脑:开始。 按照屏幕上的说明操作。
Windows RE:在“开始”菜单中选择设置>更新和安全>恢复>高级启动:立即重启。 Windows RE 启动后,选择“疑难解答”>“重置此电脑”,然后按照屏幕上的说明进行操作。
若要测试更多恢复选项,请参阅验证方案。