Windows S 模式部署实验室

创建 S 模式部署从常规基本 Windows 桌面版映像开始。 S 模式是通过将 unattend(无人参与)文件应用于已装载的 Windows 映像来应用的。 在使用处于 S 模式的电脑时,制造过程与其他版本的 Windows 相比存在一些差异。 规划部署时,必须确保驱动程序应用在 S 模式下受支持。

本实验室将指导您完成在 S 模式下配置 Windows 桌面映像以进行部署的过程。 我们将自定义一个映像,使用 unattend 文件设置 S 模式,在 WinPE 中添加 manufacturing 注册表项,然后在审核模式下删除该注册表项。 然后我们将配置恢复并准备要交付的映像。

注意

如果你正在生成 Windows 10 S 映像,我们将列出 S 模式 Windows 10 与 Windows 10 S 之间的差别。

现在就开始吧。

获取所需的工具

若要开始生成部署映像,需要做好以下准备:

  • Windows 10 映像
    • 对于 S 模式 Windows 10,请使用 Windows 家庭版或 Windows 专业版映像
    • 对于 Windows 10 S,请使用 Windows 10 S 映像
  • 运行 Windows 10 版本 1803 或更高版本的技术人员电脑
  • 可在其中部署映像的参考电脑
  • 技术人员电脑上安装的最新版本的 ADK 和 WinPE 加载项
  • 可格式化的 USB 启动盘
  • 部署脚本
  • 自定义项,例如驱动程序或语言包
  • Microsoft 更新目录中最新的常规发行版更新
  • Windows 10 映像
    • 对于处于 S 模式的 Windows 11,请使用 Windows 家庭版映像
  • 运行 Windows 10 版本 1803 或更高版本的技术人员电脑
  • 可在其中部署映像的参考电脑
  • 技术人员电脑上安装的最新版本的 ADK 和 WinPE 加载项
  • 可格式化的 USB 启动盘
  • 部署脚本
  • 自定义项,例如驱动程序或语言包
  • Microsoft 更新目录中最新的常规发行版更新

格式化 USB 启动盘

若要准备 USB 驱动器,需要创建单独的 FAT32 和 NTFS 分区。 下面将在 USB 驱动器上创建两个分区:一个 2GB FAT32 分区,一个使用驱动器上剩余可用空间的 NTFS 分区。 请确保 USB 驱动器为 2GB WinPE 分区留出足够的可用空间,并可以在 NTFS 分区上保存大映像:

  1. 在技术人员电脑上,以管理员身份启动部署和映像工具环境:

    • 单击开始,键入部署和映像工具环境。 右键单击部署和映像工具环境,然后选择以管理员身份运行
  2. 打开 diskpart。

    diskpart
    
  3. 选择 USB 启动盘的磁盘号,然后运行 clean 命令。 此命令会导致 USB 启动盘上的所有数据均不可访问。 请确保已备份你要保留的所有数据。

    list disk
    select <disk number>
    clean
    

    其中 <disk number> 是 USB 驱动器号

  4. 为 WinPE 创建 FAT32 分区,为其添加卷标“Windows PE”并将其标记为活动状态。

    create partition primary size=2000
    format quick fs=fat32 label="Windows PE"
    assign letter=P
    active
    
  5. 创建 NTFS 分区,将在其中存储映像和自定义项。

    create partition primary
    format fs=ntfs quick label="Data"
    assign letter=T
    list vol
    exit
    

在 USB 启动盘上创建一个可启动的 WinPE 分区

在技术人员电脑上:

  1. 以管理员身份打开部署和映像工具环境。

  2. 将基础 WinPE 文件复制到新文件夹中:

    copype amd64 C:\winpe_amd64
    
  3. 将 WinPE 文件复制到 FAT32 分区。

    MakeWinPEMedia /UFD C:\winpe_amd64 P:
    

    出现提示后,按“Y” 以格式化该驱动器并安装 WinPE。

有关如何创建 WinPE 驱动器的详细信息,请参阅 WinPE:创建可启动的 USB 驱动器

创建数据 USB 分区

  1. 在文件资源管理器中,打开部署脚本 zip 文件并将 scripts 文件夹复制到 USB 驱动器的数据分区中。

  2. 在部署和映像工具环境中,使用 copydandi.cmd 将部署和映像工具复制到 USB 驱动器

    copydandi amd64 T:\deploymenttools
    
  3. 复制审核模式所需的任何其他自定义项。

装载 install.wim 和 winre.wim

装载 Windows 映像的过程与我们前面用于装载 WinPE 映像的过程相同。 装载 Windows 映像 (install.wim) 时,可以访问另一个映像 WinRe.wim,它是支持恢复方案的映像。 同时更新 install.wim 和 WinRE.wim 有助于保持两个映像同步,从而确保恢复按预期进行。

  1. 通过在文件资源管理器中双击 Windows 安装介质 ISO 来进行装载。

  2. 创建一个临时文件夹 (C:\temp),然后将 install.wim 从 D:\Sources(其中 D: 是已装载映像的驱动器号)复制到该临时文件夹。

    md c:\temp
    copy d:\sources\install.wim c:\temp
    
  3. 以管理员身份打开部署和映像工具环境。

  4. 创建一个用于装载映像的文件夹,然后装载 install.wim。

    Md C:\mount\windows
    Dism /Mount-Wim /WimFile:C:\temp\install.wim /index:1 /MountDir:C:\mount\windows
    
  5. 为已装载的映像中的 Windows RE 映像文件创建一个装载文件夹,然后装载 WinRE 映像。

    Md c:\mount\winre 
    Dism /Mount-Wim /WimFile:C:\mount\windows\Windows\System32\Recovery\winre.wim /index:1 /MountDir:C:\mount\winre
    

    故障排除:如果在指定目录下看不到 winre.wim,请使用以下命令将该文件设置为可见

    attrib -h -a -s C:\mount\windows\Windows\System32\Recovery\winre.wim
    

    故障排除:如果装载映像失败,请确保使用的是随 Windows ADK 一起安装的 DISM 版本,而不是技术人员计算机上的旧版本。 不要将映像装载到受保护的文件夹,例如 User\Documents 文件夹。 如果 DISM 进程中断,请考虑暂时断开网络连接并禁用病毒防护。

有关装载 Windows 映像的详细信息,请参阅使用 DISM 装载和修改 Windows 映像

若要了解如何自定义 WinRE,请参阅自定义 Windows RE

启用自定义项

启用 S 模式

注意

如果从 Windows 10 S 媒体开始操作,则本部分的内容不适用。 如果从 Windows 10 S 媒体开始操作,请转到下一部分

在自定义映像之前,请使用 unattend 文件的脱机维护阶段将 Windows电脑设置为 S 模式。

  1. 使用 Windows SIM 创建 unattend 文件。

  2. SkuPolicyRequired 添加到 offlineServicing 阶段

  3. SkuPolicyRequired 设置为 1

  4. 将该文件保存为 unattend.xml

  5. 将 unattend.xml 复制到装载的 Windows 映像:

    MkDir c:\mount\windows\Windows\Panther
    Copy unattend.xml  C:\mount\windows\Windows\Panther\unattend.xml
    
  6. 将 unattend 文件应用于装载的映像:

    DISM /Image=C:\mount\windows /Apply-Unattend=C:\mount\windows\Windows\Panther\unattend.xml
    

当电脑启动时,它将启动进入 S 模式并强制实施 CI 策略。 如果需要对 Windows 映像进行自定义,必须启用 manufacturing 注册表项。 这样,就可以在审核模式下进行更改。

添加 manufacturing 注册表项

启用制造模式是在使用 S 模式 Windows 10 和 Windows 10 S 时必须执行的步骤。若要在制造过程中启用自定义,必须添加一个注册表项,以便在启动进入审核模式后能够运行未签名的代码。 这可以帮助你在准备好交付电脑时生成和测试映像。

我们将通过加载已装载映像的 SYSTEM 注册表配置单元,然后添加一个注册表项,将自定义注册表项添加到已装载的映像。 然后,我们将配置 ScanState 以便在捕获恢复包时排除该注册表项,从而确保在执行重置或恢复方案期间该注册表项不会还原。

重要

请不要交付使用注册表的电脑。 在寄送设备之前删除此注册表项。

  1. 将装载的映像中的 SYSTEM 注册表配置单元加载到技术人员电脑上的 regedit 中。 我们将使用一个名为 HKLM\Windows10S 的临时配置单元。

     reg load HKLM\Windows10S C:\Mount\Windows\Windows\System32\Config\System
    
  2. 将以下注册表项添加到刚刚装载的注册表中。

    reg add HKLM\Windows10S\ControlSet001\Control\CI\Policy /v ManufacturingMode /t REG_DWORD /d 1
    
  3. 从技术人员电脑中卸载注册表配置单元。

    reg unload HKLM\Windows10S
    

装载的映像现在包含 manufacturing 注册表项,让你可以在审核模式下进行更改。 在交付电脑之前必须删除该注册表项。

若要了解 Windows 10 S manufacturing 注册表项,请参阅 Windows 10 S 制造模式

创建 exclusion.xml

现在我们创建一个文件,用于在捕获恢复设置时自动排除自定义注册表项。 这可以确保电脑在恢复过程中不会还原自定义注册表项。

  1. 在文本编辑器中创建一个 xml 文件。

  2. 复制并粘贴以下代码。 此代码告知 ScanState 不要在它创建的恢复包中捕获该注册表项:

    &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
    <migration urlid="https://www.microsoft.com/migration/1.0/migxmlext/ExcludeManufacturingMode">
    <component type="System">
    <displayName>Exclude manufacturing regkey</displayName>
        <role role="Settings">
            <rules context="System">
                <unconditionalExclude>
                    <objectSet>
                        <pattern type="Registry">HKLM\SYSTEM\CurrentControlSet\Control\CI\Policy [ManufacturingMode]</pattern>
                    </objectSet>
                </unconditionalExclude>
            </rules>
        </role>
    </component>
    </migration>
    
  3. 将此文件另存为 exclusion.xml。

稍后当我们在实验中捕获用于恢复的 ScanState 包时,将使用此配置文件。

可以在排除文件和设置中了解如何从 ScanState 包中排除文件和设置。

添加驱动程序

与其他版本的 Windows 一样,可将驱动程序添加到 Windows 10 S 映像,以确保在用户首次启动进入 Windows 时硬件已设置且正常工作。 确保要添加到 Windows 10 S 的驱动程序与 Windows 10 S 兼容且不会遭到阻止。

  1. 通过 .inf 文件将单个驱动程序添加到 Windows 和 WinRE 映像。 在此示例中,我们将使用名为 media1.inf 的驱动程序:

    Dism /Add-Driver /Image:"C:\mount\windows" /Driver:"C:\Drivers\PnP.Media.V1\media1.inf"
    Dism /Add-Driver /Image:"C:\mount\winre" /Driver:"C:\Drivers\PnP.Media.V1\media1.inf"
    

    其中“C:\Drivers\PnP.Media.V1\media1.inf”是要添加的驱动程序的 .inf 文件。

    Dism /Add-Driver /Image:"C:\mount\windows" /Driver:c:\drivers /Recurse 
    
  2. 验证驱动程序是否为映像的一部分:

    Dism /Get-Drivers /Image:"C:\mount\windows"
    Dism /Get-Drivers /Image:"C:\mount\winre"
    

    检查包列表,验证其中是否包含已添加的驱动程序。

有关将驱动程序添加到脱机 Windows 映像的详细信息,请参阅在脱机 Windows 映像中添加和删除驱动程序

添加语言(可选)

在本部分,我们将德语 (de-de) 语言包添加到已装载的 Windows 和 WinRE 映像。

  1. 将德语语言包添加到 Windows 映像。

    使用 64 位 ISO 中的语言包:

    Dism /Add-Package /Image:C:\mount\windows /PackagePath:"E:\x64\langpacks\Microsoft-Windows-Client-Language-Pack_x64_de-de.cab "
    

    其中,E: 是已装载的语言包 ISO 的驱动器号。

  2. 将德语语言包添加到 Windows RE。 语言包作为 ADK 的一部分提供,确保用户的语言在执行恢复方案期间可用。

    Dism /image:C:\mount\winre /add-package /packagepath:"E:\Windows Preinstallation Environment\x64\WinPE_OCs\de-de\lp.cab" 
    

在本部分,我们将德语 (de-de) 语言包添加到已装载的 Windows 和 WinRE 映像。

  1. 将德语语言包添加到 Windows 映像。

    使用语言和可选功能 ISO 中的语言包:

    Dism /Add-Package /Image:C:\mount\windows /PackagePath:"E:\x64\langpacks\Microsoft-Windows-Client-Language-Pack_x64_de-de.cab "
    

    其中 E: 是装载的语言和可选功能 ISO 的驱动器号。

  2. 将德语语言包添加到 Windows RE。 语言包作为 ADK 的一部分提供,确保用户的语言在执行恢复方案期间可用。

    Dism /image:C:\mount\winre /add-package /packagepath:"E:\Windows Preinstallation Environment\x64\WinPE_OCs\de-de\lp.cab" 
    

有关详细信息,请参阅使用 DISM 脱机添加和删除语言包

添加最新更新

安装包含最新 bug 修复和 OS 更改的最新更新包。

[重要] 在安装语言包、AppX 包和按需功能之后安装更新包。 如果在添加这些包和功能之前安装 GDR,则必须重新安装 GDR。

  1. Microsoft 更新目录下载最新更新。

  2. 使用 DISM /add 包将 GDR 添加到装载的映像,例如:

    dism /image:"C:\mount\windows" /add-package /packagepath:C:\temp\windows10.0-kb4020102-x64_9d406340d67caa80a55bc056e50cf87a2e7647ce.msu
    dism /image:"C:\mount\winre" /add-package /packagepath:C:\temp\windows10.0-kb4020102-x64_9d406340d67caa80a55bc056e50cf87a2e7647ce.msu
    
  3. 使用 DISM 清理映像。

    DISM /Cleanup-Image /Image=C:\mount\winre /StartComponentCleanup /ScratchDir:C:\Temp
    

有关将包添加到 Windows 映像的详细信息,请参阅使用 DISM 脱机添加或删除包

卸载 WinRE 映像并创建副本

完成所有脱机自定义后,接下来可以卸载映像。

  1. 关闭所有可能从该映像访问文件的应用程序。

  2. 提交更改并卸载 WinRE 和 Windows 映像:

    Dism /Unmount-Image /MountDir:"C:\mount\winre" /Commit
    Dism /Export-Image /SourceImageFile:c:\mount\windows\windows\system32\recovery\winre.wim /SourceIndex:1 /DestinationImageFile:c:\mount\winre-optimized.wim
    del c:\mount\windows\windows\system32\recovery\winre.wim
    copy c:\mount\winre-optimized.wim c:\mount\windows\windows\system32\recovery\winre.wim
    

卸载 install.wim

Dism /Unmount-Image /MountDir:"C:\mount\windows" /Commit

将 install.wim 和 winre.wim 复制到 USB 驱动器

copy c:\temp\install.wim t:\
copy c:\temp\winre-optimized.wim t:\

将映像部署到参考电脑

  1. 将参考电脑启动至 WinPE。

  2. 使用部署脚本应用已修改的 install.wim 映像。

    T:\Deployment\walkthrough-deploy.bat t:\install.wim
    

启动至审核模式并进行更改

  1. 如果参考电脑尚未启动,请将它启动。
  2. 当设备启动至 OOBE 时,按 Ctrl+Shift+F3 进入审核模式。
  3. 电脑将重启并进入审核模式。
  4. 对电脑进行更改。 请参阅规划 S 模式映像上的表,了解哪些自定义项在审核模式下可用。

若要了解审核模式,请参阅审核模式概述。 若要了解审核模式在 S 模式下的行为,请参阅 Windows S 模式生产环境中的审核模式

捕获恢复工具的审核模式更改

在审核模式下自定义映像后,接下来可以使用 ScanState 来捕获包,以便自定义项在恢复方案中可用。

  1. 使用已复制到 USB 启动盘的 ScanState 将自定义项捕获到预配程序包中。 使用前面创建的 exclude.xml 文件来确保在恢复期间 manufacturing 注册表项不会还原。

    md c:\Recovery\Customizations
    T:\deploymenttools\scanstate /config:T:\deploymenttools\Config_SettingsOnly.xml /o /v:13 /ppkg c:\recovery\customizations\usmt.ppkg /i:exclusion.xml /l:C:\Scanstate.log
    
  2. 捕获成功完成后,删除 ScanState 日志文件:del c:\scanstate.log

删除 manufacturing 注册表项

在审核模式下完成自定义电脑后,必须删除允许在 S 模式下运行未签名代码的生产注册表项。

若要删除该注册表项,请在参考电脑上启动进入审核模式时以管理员身份运行以下命令:

reg delete HKLM\system\ControlSet001\Control\CI\Policy /v ManufacturingMode

将 WinRE 添加回到捕获的映像

为了确保为最终部署捕获你的 WinRE 映像,请将导出的 WinRE-optimized.wim 映像复制到 Windows 10 S 映像。

xcopy t:\winre-optimized.wim c:\windows\system32\recovery\winre.wim

运行 Sysprep 并关闭电脑

  1. 打开命令提示符。

  2. 运行 sysprep 以重新密封电脑,并使其做好捕获准备。

    c:\windows\system32\sysprep\sysprep /generalize /oobe /shutdown
    

捕获映像

  1. 将参考电脑启动进入 WinPE。

  2. 在 diskpart 中标识 Windows 分区的驱动器号:

    diskpart
    list volume
    exit
    
  3. 使用 DISM 捕获 Windows 分区。

    dism.exe /capture-image /ImageFile:"T:\Images\Windows10S.wim" /capturedir:C:\ /Name:"Windows10S"
    

    其中 C:\ 是 Windows 分区。

有关详细信息,请参阅捕获和应用 Windows 系统分区与恢复分区

部署映像并验证自定义和恢复

应用映像

  1. 将参考电脑启动进入 WinPE。

  2. 将 S 模式映像 (Windows10S.wim) 应用到电脑。 这会覆盖任何现有的 Windows 安装。

    T:
    cd Deployment
    T:\Deployment\applyimage.bat T:\images\Windows10S.wim
    

验证自定义

  1. 启动参考电脑。 这是第一次使用新的 Windows 映像启动该电脑。
  2. 如果安装了其他语言,请验证这些预装的语言是否出现,并可以在 OOBE 期间供用户选择。
  3. 在 OOBE 完成后,验证所做的桌面自定义是否正确。

验证恢复

若要验证恢复是否按预期方式工作,请执行以下验证任务:

  • 运行刷新恢复,并验证用户文件是否已保留,以及出厂桌面自定义项是否已还原。
  • 运行重置恢复,并验证用户文件和配置文件是否已删除,以及出厂桌面自定义项是否已还原。
  • 使用提供的策略文件,在模拟 RS3 强制级别中验证扩展性脚本。
  • 如果使用 ScanState 创建了恢复包,请确保在捕获该包时排除了 manufacturing 注册表项。

交付电脑

现在您已拥有映像,可以生成和交付 S 模式电脑。 请确保在交付的电脑上删除 manufacturing 注册表项并启用安全启动。