前言

通过本文的方法,可以模拟MDT的收集过程,并在几秒钟定位到配置存在问题的地方,节约时间。


过去很长一段时间我都会在 MDT 制作、部署新的系统镜像时浪费大量时间。并不是每次制作都是一次性成功,期间会涉及到通过配置文件、变量、脚本来按不同场景进行系统、应用、驱动的测试及部署,当任意环节出现问题,将不得不再重新修改、重新部署。


前提条件

  • 一台加入域的计算机;
  • MDT 平台已经部署完成

配置方法

  1. 在域客户端中创建MDT文件夹,我的路径为:C:\MDT
  2. 在域客户端中打开lusrmgr.msc将MDT管理员账户ITPro\MDT_BA加入到本地管理员组;
  3. 在域计算机中,访问MDT DeploymentShare\\ITPRO-MDT01\MDTBuildLab$ 目录中的Scripts文件夹,将下列文件复制到C:\MDT\中:
    ZTIDataAccess.vbs
    ZTIGather.wsf
    ZTIGather.xml
    ZTIUtility.vbs
    ==注意:如果你的环境中还有一些自定义的脚本,也需要将其复制到C:\MDT目录里==
  4. 将MDT DeploymentShare\\ITPRO-MDT01\MDTBuildLab$\Control 目录中CustomSettings.ini复制到C:\MDT目录;
  5. C:\MDT\中创建文件夹X64,并将\\ITPRO-MDT01\MDTBuildLab$\Tools\X64中的Microsoft.BDD.Utility.dll文件复制到C:\MDT\X64中;
  6. CMTrace.exe下载CMTrace下载链接并复制到C:\MDT\中;
  7. 创建Powershell 脚本,并将以下脚本粘贴进去保存为Gather.ps1
# Check for elevation
If (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(`
    [Security.Principal.WindowsBuiltInRole] "Administrator"))
{
    Write-Warning "Oupps, you need to run this script from an elevated PowerShell prompt!`nPlease start the PowerShell prompt as an Administrator and re-run the script."
    Write-Warning "Aborting script..."
    Break
}

cls
if (Test-Path -Path "C:\MININT") {Write-Host "C:\MININT exists, deleting...";Remove-Item C:\MININT -Recurse}
cscript.exe ZTIGather.wsf /debug:true

# 通过CMTrace去打开日志
& "C:\MDT\CMTrace" C:\MININT\SMSOSD\OSDLOGS\ZTIGather.log

MDT8456部署Windows系列 (六): 技巧篇—模拟测试部署系统、快速定位错误配置
MDT8456部署Windows系列 (六): 技巧篇—模拟测试部署系统、快速定位错误配置
MDT8456部署Windows系列 (六): 技巧篇—模拟测试部署系统、快速定位错误配置
最终的文件


使用方法

我通过一些需求场景,自定义配置CustomSettings.ini,然后通过该模拟测试平台进行验证,看看最终的效果。

需求场景:

  • 默认计算机名为:DESKTOP-序列号的后 5 位(例如:DESKTOP-123QW),加域并移到OU=Laptops,OU=Computers,OU=ITPro,DC=ITPro,DC=cc OU 里
  • 为了验证效果,我添加一个条件,当部署的客户端为虚拟机时,自动将计算机命名规则设置为VM-序列号的前 7 位(例如:VM-ABCD123),加域并移动到OU=Workstations,OU=Computers,OU=ITPro,DC=ITPro,DC=cc OU
  • 当部署的客户端为虚拟机时,自动部署7zip微信其他机型不做安装;
  • 当部署的客户端为虚拟机时,自动将屏幕分辨率设置为1920*1080。且安装界面Banner 的显示名为ITPro - OSDeployment for Virtual Machine;

按照以上需求,我将CustomSettings.ini配置为以下内容:

[hide]

[Settings]
Priority=Model, Default
Properties=MyCustomProperty

[Virtual Machine]
_SMSTSORGNAME=ITPro.cc
_SMSTSpackageName="ITPro - OSDeployment for Virtual Machine"
BitsPerPel=32
VRefresh=60
XResolution=1920
YResolution=1080
OSDComputerName=VM-#Left("%SerialNumber%",7)#
MandatoryApplications001={7190c4fe-b62e-4d3a-b638-f0e8cc6def11}
MandatoryApplications002={1d3b340f-4ff7-47b8-9dfb-5d0b75959a3e}
MachineObjectOU=OU=Workstations,OU=Computers,OU=ITPro,DC=ITPro,DC=cc

[Default]

_SMSTSORGNAME=ITPro.cc
_SMSTSpackageName="ITPro - Win10 21H2 Enterprise"

OSInstall=YES
SkipCapture=YES
SkipDeploymentType=YES
DeploymentType=NEWCOMPUTER
OSDComputerName=DESKTOP-#Right("%SerialNumber%",5)#
SkipAdminPassword=YES
Adminpassword=ITPro.cc@1688
SkipAppsOnUpgrade=NO
SkipComputerName=NO
SkipProductKey=YES
;ProductKey=ABCD-XXXX-XXXX-XXXX ;设置指定产品秘钥
SkipDomainMembership=NO
JoinDomain=ITPro.cc
DomainAdmin=ITPRO\MDT_BA
DomainAdminPassword=P@ssword$$$.com
DomainAdminDomain=ITPro.cc
MachineObjectOU=OU=Laptops,OU=Computers,OU=ITPro,DC=ITPro,DC=cc
;JoinWorkgroup=WORKGROUP
SkipComputerBackup=YES
SkipBitLocker=YES
SKipTaskSequence=NO
SkipFinalSummary=YES
SkipTimeZone=YES
TimeZoneName=China Standard Time
KeyboardLocale=en-us
UserLocale=zh-cn
UILanguage=en-us
SkipLocaleSelection=YES
SkipUserData=YES
SkipSummary=NO
SLShare=\\ITPRO-MDT01\Logs$
;WSUSServer=http:;wsus01.ITPro.cc8530 ;可指定部署过程中通过WSUS服务器更新系统补丁
ApplyGPOPack=NO

[/hide]

执行测试

  1. 以管理员身份执行前面创建的Gather.ps1;
  2. 初次执行会报错,需要执行一条命令:Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -Force
  3. 初次执行完成后,会提示是否以CMTrace作为默认日志阅读工具,点 Yes即可;

MDT8456部署Windows系列 (六): 技巧篇—模拟测试部署系统、快速定位错误配置
MDT8456部署Windows系列 (六): 技巧篇—模拟测试部署系统、快速定位错误配置
MDT8456部署Windows系列 (六): 技巧篇—模拟测试部署系统、快速定位错误配置
MDT8456部署Windows系列 (六): 技巧篇—模拟测试部署系统、快速定位错误配置

检查日志

正常情况下 CMtrace 工具打开后没有红色、橙色信息,以及最后一行显示为 Successfully,说明配置没有问题,可以拿真机部署验证一下。

基于我们上面的需求,可以在模拟的输出日志中来查看是否都是按照预先的需求来正确的配置了
MDT8456部署Windows系列 (六): 技巧篇—模拟测试部署系统、快速定位错误配置

总结

通过以上方式,可以通过模拟测试环境,快速的测试并判断自定义的配置文件的配置正确与否,大大节约了我们前期的部署时间。

==注意: 该测试方式无法针对应用部署、驱动安装类的执行命令做模拟部署。涉及到这些范围,还是需要进行手动安装测试==