🤖 WDS 无人值守安装

WDS 部署服务 · 第 5 篇 · 适用于 Windows Server 2019 / 2022 / 2025

📑 目录

  1. 无人值守安装概述
  2. 应答文件(Unattend.xml)结构
  3. WDS 应答文件配置级别
  4. 常用应答文件示例
  5. 部署与验证
  6. 常见问题

1. 无人值守安装概述

无人值守安装通过应答文件(Unattend.xml)自动完成 Windows 安装过程中的交互步骤,无需人工干预。

配置阶段说明
windowsPEWindows PE 阶段,配置磁盘分区、选择映像
offlineServicing离线服务阶段,注入驱动和更新
specialize专用化阶段,配置计算机名、域加入等
oobeSystemOOBE 阶段,配置用户账户、区域设置等

2. 应答文件(Unattend.xml)结构

应答文件是 XML 格式,可用以下方式创建:

PowerShell - 安装 Windows SIM(ADK)
# 下载并安装 ADK(含 Windows SIM)
Invoke-WebRequest -Uri "https://go.microsoft.com/fwlink/?linkid=2243390" `
    -OutFile "C:\Temp\adksetup.exe"

# 安装 ADK(仅部署工具)
.\C:\Temp\adksetup.exe /quiet /features OptionId.DeploymentTools

3. WDS 应答文件配置级别

WDS 支持在三个级别配置应答文件:

级别作用范围优先级
服务器级别所有通过此 WDS 服务器部署的客户端最低
映像组级别指定映像组中的所有映像
客户端级别指定计算机(通过 GUID 或 MAC 地址)最高
1

WDS 管理控制台 → 右键 WDS01属性

2

切换到 客户端 选项卡

3

勾选 启用无人值守安装 → 浏览选择应答文件

4

分别设置 启动映像应答文件(windowsPE 阶段)和 安装映像应答文件(OOBE 阶段)

PowerShell - 配置服务器级别应答文件
# 设置启动映像应答文件(windowsPE 阶段)
WDSUTIL /Set-Server `
    /WDSUnattend /Policy:Enabled `
    /File:"E:\RemoteInstall\WDSClientUnattend\boot-unattend.xml" `
    /Architecture:x64

4. 常用应答文件示例

4.1 启动映像应答文件(自动分区 + 选择映像)

XML - boot-unattend.xml
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
  <settings pass="windowsPE">
    <component name="Microsoft-Windows-International-Core-WinPE"
               processorArchitecture="amd64" language="neutral"
               xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
      <SetupUILanguage>
        <UILanguage>zh-CN</UILanguage>
      </SetupUILanguage>
      <InputLocale>zh-CN</InputLocale>
      <SystemLocale>zh-CN</SystemLocale>
      <UILanguage>zh-CN</UILanguage>
      <UserLocale>zh-CN</UserLocale>
    </component>
    <component name="Microsoft-Windows-Setup"
               processorArchitecture="amd64" language="neutral">
      <DiskConfiguration>
        <Disk wcm:action="add">
          <DiskID>0</DiskID>
          <WillWipeDisk>true</WillWipeDisk>
          <CreatePartitions>
            <CreatePartition wcm:action="add">
              <Order>1</Order>
              <Type>EFI</Type>
              <Size>260</Size>
            </CreatePartition>
            <CreatePartition wcm:action="add">
              <Order>2</Order>
              <Type>MSR</Type>
              <Size>128</Size>
            </CreatePartition>
            <CreatePartition wcm:action="add">
              <Order>3</Order>
              <Type>Primary</Type>
              <Extend>true</Extend>
            </CreatePartition>
          </CreatePartitions>
        </Disk>
      </DiskConfiguration>
      <ImageInstall>
        <OSImage>
          <InstallTo>
            <DiskID>0</DiskID>
            <PartitionID>3</PartitionID>
          </InstallTo>
        </OSImage>
      </ImageInstall>
    </component>
  </settings>
</unattend>

4.2 OOBE 应答文件(自动加入域)

XML - oobe-unattend.xml
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
  <settings pass="specialize">
    <component name="Microsoft-Windows-UnattendedJoin"
               processorArchitecture="amd64" language="neutral">
      <Identification>
        <JoinDomain>iehang.cn</JoinDomain>
        <Credentials>
          <Domain>iehang.cn</Domain>
          <Username>DomainAdmin</Username>
          <Password>P@ssw0rd123</Password>
        </Credentials>
      </Identification>
    </component>
  </settings>
  <settings pass="oobeSystem">
    <component name="Microsoft-Windows-Shell-Setup"
               processorArchitecture="amd64" language="neutral">
      <OOBE>
        <HideEULAPage>true</HideEULAPage>
        <HideLocalAccountScreen>true</HideLocalAccountScreen>
        <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
        <HideOnlineAccountScreen>true</HideOnlineAccountScreen>
        <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
        <ProtectYourPC>1</ProtectYourPC>
      </OOBE>
      <UserAccounts>
        <LocalAccounts>
          <LocalAccount wcm:action="add">
            <Name>Admin</Name>
            <Group>Administrators</Group>
            <Password>
              <Value>P@ssw0rd123</Value>
              <PlainText>true</PlainText>
            </Password>
          </LocalAccount>
        </LocalAccounts>
      </UserAccounts>
      <TimeZone>China Standard Time</TimeZone>
    </component>
  </settings>
</unattend>

5. 部署与验证

PowerShell - 创建应答文件目录并上传
# 创建应答文件存储目录
New-Item -Path "E:\RemoteInstall\WDSClientUnattend" -ItemType Directory -Force

# 将应答文件复制到 WDS 服务器
Copy-Item "C:\Temp\boot-unattend.xml" `
    "E:\RemoteInstall\WDSClientUnattend\boot-unattend.xml"
Copy-Item "C:\Temp\oobe-unattend.xml" `
    "E:\RemoteInstall\WDSClientUnattend\oobe-unattend.xml"

6. 常见问题

Q1:应答文件没有生效,安装过程仍需要手动操作

① 确认应答文件 XML 格式正确(用 Windows SIM 验证)② 确认 WDS 属性中已启用无人值守安装 ③ 确认应答文件路径正确且可访问 ④ 确认架构匹配(x86/x64/ARM64)

Q2:应答文件中域加入失败

① 确认域账户有加域权限 ② 确认密码正确 ③ 确认网络可达域控制器 ④ 检查 specialize 阶段日志:C:\Windows\Panther\UnattendGC\setupact.log

Q3:磁盘分区配置在 UEFI 和 BIOS 上不同吗?

是的。UEFI 需要 EFI 系统分区(FAT32)+ MSR + 主分区;BIOS 只需要系统保留分区 + 主分区。上面示例是 UEFI 模式。