前言

前面我有介绍通过MDT一步步部署Win10系统,但这种方法并非最优的部署方式。通常在企业环境中,标准的操作系统除了底层的OS外,还涉及到企业规定使用的标准的软件及环境,如:

APP: 7zip,Office365,VLC Media Player,企业微信 or 钉钉 等等;
其他: Visual C++ runtimes,Microsoft .NET Framework,Windows updates 等等;

不同的公司仍会有更多需要安装的软件。那么如果每台机器在安装系统的工程中(或系统安装完成后手动)安装,这样会浪费大量时间。因此,我们可以通过本文方法,先通过MDT制作一个适用于公司环境的标准化镜像WIM镜像模板文件,然后再通过MDT将该自定义模板系统进行批量部署,最终实现操作系统+应用层面的标准化。


环境准备


详细步骤

创建捕捉镜像任务序列

新建制作模板镜像并捕捉生成至WIM的任务序列,新建向导配置如下:

  1. Task sequence ID: REF-001
  2. Task sequence name: Building Win10 21H2 Enterprise Custom Image
  3. Template: Standard Client Task Sequence
  4. Select OS: Windows 10 Enterprise x64 21H2
  5. Specify Product Key: Do not specify a product key at this time
  6. Full Name: Admin
  7. Organization: ITPro.cc
  8. Internet Explorer home page: blog.itpro.cc
  9. Do not specify an Administrator password at this time

MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板

下面我将通过Powershell脚本导入APP & 手动添加APP两种方式将常用软件添加至应用中。使用Powershell导入的好处是当你有很多APP需要添加时,用该方法会非常方便、高效

使用PowerShell导入O365、7zip

1.在MDT服务器上,以MDT管理员身份登录并执行以下PowerShell来连接MDT平台:

Import-Module "D:\Program Files\Microsoft Deployment Toolkit\bin\MicrosoftDeploymentToolkit.psd1"
New-PSDrive -Name "DS001" -PSProvider MDTProvider -Root "D:\MDTBuildLab"

可以使用Get-Command -module MicrosoftDeploymentToolkit查看可用 cmdlet 的列表

MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板

2.导入VLC

$ApplicationName = "Install - VLC media player - x64"
$CommandLine = "vlc-3.0.17.4-win64.exe /S"
$ApplicationSourcePath = "D:\Sources\VLC"
Import-MDTApplication -Path "DS001:\Applications\Applications For Reference Image" -Enable "True" -Name $ApplicationName -ShortName $ApplicationName -CommandLine $CommandLine -WorkingDirectory ".\Applications\$ApplicationName" -ApplicationSourcePath $ApplicationSourcePath -DestinationFolder $ApplicationName -Verbose

注意:DS001:\Applications\Applications For Reference Image\这个路径对应的是MDT控制台中Applications目录中对应的子目录,我这里为Applications For Reference Image
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板

3.导入企业微信

$ApplicationName = "Install - 企业微信"
$CommandLine = "WeCom_4.0.8.6023.exe /S"
$ApplicationSourcePath = "D:\Sources\WeCom"
Import-MDTApplication -Path "DS001:\Applications\Applications For Reference Image" -Enable "True" -Name $ApplicationName -ShortName $ApplicationName -CommandLine $CommandLine -WorkingDirectory ".\Applications\$ApplicationName" -ApplicationSourcePath $ApplicationSourcePath -DestinationFolder $ApplicationName -Verbose

MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板

4.导入O365

$ApplicationName = "Install - Office365 ProPlus - x64"
$CommandLine = "setup.exe /configure configuration.xml"
$ApplicationSourcePath = "D:\Sources\Office365"
Import-MDTApplication -Path "DS001:\Applications\Applications For New OS\" -Enable "True" -Name $ApplicationName -ShortName $ApplicationName -CommandLine $CommandLine -WorkingDirectory ".\Applications\$ApplicationName" -ApplicationSourcePath $ApplicationSourcePath -DestinationFolder $ApplicationName -Verbose

MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板

手动添加Visual C++ runtimes至应用

  1. 将下载好的Visual C++ runtimes上传至MDT,并按以下结构存放MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
  2. 这里配置个PowerShell脚本,用于批量安装Visual C++ runtimes,存放路径如图所示MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
    脚本下载链接
  3. 添加至MDT应用程序中MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
    MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
    MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
    MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
    MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板

编辑任务序列

打开任务序列REF-001并访问State Restore步骤内,找到Windows Update (Pre-Application Installation)在下面创建一个Group名为Install Application并将Visual C++等软件添加进去,如下图所示:
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板

安装Microsoft NET Framework 3.5.1

Tattoo后新建自定义任务组,并添加安装功能角色操作:

任务名称:Install - Microsoft NET Framework 3.5.1
选择系统类型: Windows 10
选择要安装的角色功能:NET Framework 3.5 (includes .NET 2.0 and 3.0)

MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板

启用Windows Update

分别将Windows Update (Pre-Application Installation)Windows Update (-Application Installation)

最终顺序

添加暂停功能

很多时候,在捕捉镜像任务执行到镜像安装完成之后、捕捉生成WIM文件之前,我们想再做一些其他的操作。按照上述的任务配置,是无法进行人工干预,安装完系统、软件、更新补丁后会自动Sysprep并重启。

这个时候我们可以在安装系统完成进入桌面后Sysprep之间,添加暂停功能,给我们操作空间。
任务名称:Suspend
任务类型:Run Command Line
命令:cscript.exe "%SCRIPTROOT%\LTISuspend.wsf"
暂停功能

当手动操作完成后,再双击桌面Resume Task Sequence恢复运行后续的任务。
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板

配置系统部署规则

通过修改规则文件Bootstrap.iniCustomSettings.ini来进行部署任务的配置。

Bootstrap.ini

[Settings]
Priority=Default

[Default]
DeployRoot=\\ITPRO-MDT01\MDTBuildLab$
UserDomain=ITPro.cc
UserID=MDT_BA
UserPassword=P@ssw0rd
SkipBDDWelcome=YES

CustomSettings.ini

[Settings]
Priority=Default

[Default]
[Settings]
Priority=Default

[Default]
_SMSTSORGNAME=ITPro.cc
_SMSTSpackageName="Build and Capture Win10 21H2 Image"
UserDataLocation=NONE
ComputerBackupLocation=NETWORK
DoCapture=YES
OSInstall=Y
AdminPassword=ITPro.cc@1688
TimeZoneName=China Standard Time
JoinWorkgroup=WORKGROUP
HideShell=NO
FinishAction=SHUTDOWN
ApplyGPOPack=NO
BackupShare=\\ITPRO-MDT01\MDTBuildLab$
BackupDir=Captures
WSUSServer=http://mdt01.ITPro.cc:8530
BackupFile=CAPTURE_#month(date) & "-" & day(date) & "-" & year(date)#.wim
SLShare=\\ITPRO-MDT01\Logs$
SkipAdminPassword=YES
SkipProductKey=YES
SkipComputerName=YES
SkipDomainMembership=YES
SkipUserData=YES
SkipLocaleSelection=YES
SkipTaskSequence=NO
SkipTimeZone=YES
SkipApplications=NO
SkipBitLocker=YES
SkipSummary=YES
SkipRoles=YES
SkipCapture=NO
SkipFinalSummary=YES

配置捕捉任务序列的Profile

打开MDT高级配置⇒Selection Profiles⇒新建Prfile

名称:WinPE 10.0
属性:只选择WinPE 10.0的驱动 详细功能介绍

MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板更新启动镜像
截止为此,更新部署任务以及启动镜像后,即可进行模板镜像的制作。


验证

[scode type="green"]强烈建议请使用虚拟机去制作模板镜像,并按上述的Profile,只包含PE驱动或不包含任何驱动

创建一个单硬盘的虚拟机,并通过网络启动.

MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
这里前面为演示不同场景,VC++我已经通过任务序列添加了,所以在选择APP这块就不再选择。
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板

安装完APP后,自动完成暂停操作。
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板
我个人是不建议将Office这类的APP放在模板里,多数情况下这种会引起后期部署的客户端无法激活的情况,后期有空我再单独更新如何处理这类问题。

完成自定义操作后,点击桌面Resume Task Sequence恢复运行后续的任务,直至完成Sysperp并关机。
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板

至此,你已经制作好符合自己需求的Win10 21H2的镜像模板。然后将生成的WIM镜像文件导入至MDT作为系统部署任务的基础镜像
MDT部署Windows系列 (十一): 进阶篇—制作完美的Win10 21H2系统镜像模板


提示

如果在按照我上述的步骤,在制作模板镜像是启用了WSUS并在Sysperp之前进行Windows 10的系统更新,可能会遇到Sysperp失败的问题。我会在下一篇文章介绍这个问题的解决方法。

Enjoy~~ :smile: