ZTIGather.wsf 是 MDT (Microsoft Deployment Toolkit) 中的一个 VBScript 脚本,用于在部署过程中收集有关目标计算机硬件和软件环境的信息,并将这些信息记录在日志文件中

ZTIGather.wsf 完整拆解解构

基础定位

ZTIGather.wsfMDT(Microsoft Deployment Toolkit,微软部署工具包)Lite Touch LTI 自动化部署 的核心采集脚本;
 
文件路径:部署共享\Scripts\ZTIGather.wsf
 
运行载体:cscript.exe(控制台模式,禁止 wscript 弹窗模式)
 
核心职能:采集目标计算机硬件、固件、网络信息,加载并合并部署规则,构建全局环境变量池,驱动整个自动化部署的分支判断逻辑
通俗理解:所有 MDT 自动化判断(计算机名、驱动匹配、应用筛选、分区规则、MDT 数据库查询)全部依赖本脚本输出的变量。

一、底层原理

1. 核心运行模型

plaintext
LiteTouch.wsf(主调度脚本) → 调用 ZTIGather.wsf
        ↓
1)加载基础规则(CustomSettings.ini / Bootstrap.ini)
2)WMI/注册表/系统API采集本机硬件、网络、固件信息
3)按优先级合并所有配置源,写入全局内存对象 `oEnvironment`
4)可选:查询MDT SQL数据库,根据MAC/型号追加计算机专属配置
5)持久化变量到 Variables.dat,供后续所有脚本读取

2. 两大运行阶段

  1. WinPE 预部署阶段(最重要)
     
    裸机 PXE 引导进入 LiteTouch PE 后执行;采集 BIOS、CPU、内存、磁盘、网卡 MAC、UEFI/MBR、TPM、SecureBoot、有线 / 无线网卡信息;用于分区、驱动匹配、自动命名、准入校验(Win11 硬件检查)。
  2. 目标 OS 部署完成后阶段
     
    系统镜像部署完毕、首次进入完整 Windows 时二次采集;读取已安装系统信息、补丁、域状态,用于资产上报、应用后安装逻辑。

3. 信息采集来源

  • WMI 查询(root\cimv2、root\wmi):硬件型号、序列号、网卡、磁盘、内存、TPM、安全启动状态
  • 系统注册表:固件信息、现有系统配置
  • 系统 API / 工具调用:bcdedit、wpeutil、diskpart 信息
  • ZTIGather.xml:内置变量定义清单(规定哪些字段需要采集)

4. 变量覆盖优先级(由低→高,后者覆盖前者)

CustomSettings.ini 默认段 < 普通分段 < WMI条件分段 < Bootstrap.ini参数 < ZTIGather硬件采集值 < MDT数据库查询结果 < 任务序列手动设置变量
关键特性:硬件采集到的值会覆盖 ini 静态配置,实现「根据硬件自适应部署」。

5. 内置容错机制

  • WMI 查询失败不会中断整个采集流程,空值统一填充 UNKNOWN
  • 自动切换 WMI 命名空间重试(root\cimv2 /root\wmi);
  • 多网卡自动区分有线以太网、Wi-Fi 无线网卡,分别读取 MAC、IP、DHCP 状态;
  • 区分 UEFI / Legacy BIOS 启动模式,设置 IsUEFI 变量,供磁盘分区脚本(ZTIDiskpart.wsf)自动选择 GPT/MBR。

二、依赖文件清单

【强制直接依赖(同 Scripts 目录)】

  1. ZTIUtility.vbs【核心依赖库】
     
    提供日志封装、WMI 访问、INI 读写、变量操作、文件 IO、网络工具函数;ZTIGather 不直接调用系统 API,全部通过该库中转。
  2. ZTIGather.xml
     
    变量定义清单,控制采集字段、变量名称映射;可自定义扩展硬件采集项。
  3. ZTIDataAccess.vbs
     
    MDT SQL 数据库访问封装;当 CustomSettings.ini 开启 Database=xxx 时,用于连接数据库查询计算机专属配置。

【二进制依赖(Tools 目录)】

Microsoft.BDD.Utility.dll
 
提供底层辅助函数,硬件信息读取、字符串处理;缺失会导致部分序列号、固件信息采集失败。

【配置文件(Control 目录)】

  1. Bootstrap.ini:PE 启动阶段基础参数(部署共享路径、账号)
  2. CustomSettings.ini:部署自动化规则(Priority、数据库、变量条件)

【运行输出文件】

  1. ZTIGather.log:脚本独立日志
  2. BDD.log:MDT 全局汇总日志(所有脚本统一写入)
  3. Variables.dat(XML 格式):全局变量持久化缓存,部署重启后依然加载
默认路径:C:\MININT\SMSOSD\OSDLOGS\

【系统底层依赖】

  1. wscript.exe / cscript.exe Windows Script Host(VBS 执行引擎)
  2. WMI 服务(WinPE 内置 WMI 提供程序)
  3. tcpip.sys 网络栈(读取网卡 IP、MAC、DHCP 租约信息)
  4. NDIS 网卡驱动(有线 / 无线网卡硬件枚举)

三、依赖关系链路

完整端到端执行链路(LTI PXE 部署)

plaintext
裸机开机 → DHCP → WDS/TFTP下载 LiteTouchPE.wim → 进入WinPE
        ↓
LiteTouch.wsf 自动启动
        ↓
读取 Bootstrap.ini → 挂载SMB部署共享 → 加载 CustomSettings.ini
        ↓
【核心步骤:执行 cscript ZTIGather.wsf】
        ├─ 枚举硬件(CPU、内存、磁盘、有线网卡、Wi-Fi网卡、BIOS、TPM)
        ├─ 读取网卡DHCP信息(MAC、IP、租约状态,区分有线/无线)
        ├─ 若开启数据库:使用MAC/型号查询MDT数据库,追加专属变量
        ├─ 全部数据存入全局 oEnvironment 对象
        └─ 写入 Variables.dat 持久化
        ↓
下游脚本读取变量执行自动化逻辑:
ZTIDiskpart.wsf(分区)→ ZTIDrivers.wsf(驱动匹配)→ ZTIWindowsSetup.wsf(部署镜像)→ ZTIDomainJoin.wsf(加域)

关键联动:有线网卡 / Wi-Fi 网卡采集逻辑

ZTIGather 遍历所有 Win32_NetworkAdapterConfiguration
  1. 区分以太网适配器(有线)、802.11 无线适配器(Wi-Fi);
  2. 分别采集各自 MAC 地址、IP 地址、DHCP 启用状态;
  3. 获取网卡 DHCP 租约相关信息(LeaseObtained、LeaseExpires)存入变量;
  4. 生成变量:MACAddress(默认活动网卡)、MACAddress01/MACAddress02(多网卡依次编号);
可利用多 MAC 变量,在 MDT 数据库实现有线、无线双网卡资产识别。

和前文技术栈联动关系

  1. DHCP / DHCP 租约到期时间
     
    ZTIGather 读取网卡 DHCP 租约起止时间写入环境变量;可基于租期状态判断终端是否在线;MAC 地址来自 DHCP 报文采集,用于 MDT 数据库匹配计算机配置。
  2. w32tm 时间服务
     
    采集本机系统时间,写入部署日志;时间异常会影响日志时间戳、MDT 数据库连接 Kerberos 认证。
  3. 网络组件:读取网卡 IP、网关,为 ZTINICConfig.wsf 提供网络配置参数。

四、典型故障断链场景

  1. ZTIUtility.vbs 缺失
     
    脚本直接崩溃,ZTIGather.log 报错函数未定义;无法采集任何硬件信息。
  2. WMI 损坏(老旧工控 WinPE)
     
    硬件采集大量 UNKNOWN,无法自动匹配驱动、无法查询 MDT 数据库。
  3. SMB 共享权限不足
     
    脚本可以启动,但无法读取 CustomSettings.ini,规则加载失败。
  4. 多网卡采集异常(有线 + Wi-Fi 同时在线)
     
    MACAddress 变量随机选取活动网卡,导致 MDT 数据库匹配错误;解决方案:CustomSettings.ini 内编写 WMI 条件锁定有线网卡 MAC。
  5. MDT 数据库连通失败
     
    硬件采集正常,但无法加载计算机专属应用 / 参数;ZTIGather.log 出现 SQL 连接报错。
  6. Variables.dat 权限 / 编码损坏
     
    部署重启后变量丢失,自动化流程变回手动向导。

五、配套链(运维工具、调试手段)

1. 手动独立调试(无需完整 PXE 部署)

复制依赖文件到本地,直接模拟采集:
cmd
cscript.exe ZTIGather.wsf /debug:true
参数说明:
  • /debug:true:控制台同步输出日志;
  • /localonly:仅采集本机信息,不加载 ini 数据库规则。

2. 日志分析工具

CMTrace.exe:微软官方日志查看器,打开 ZTIGather.log / BDD.log 定位采集失败项。

3. 上下游配套核心脚本

脚本名称 和 ZTIGather.wsf 协作关系
LiteTouch.wsf 主调度,调用 ZTIGather 作为部署初始化第一步
ZTIDiskpart.wsf 读取 IsUEFI、磁盘变量自动分区
ZTIDrivers.wsf 读取硬件 PNPID 变量,匹配驱动库
ZTINICConfig.wsf 读取网卡、DHCP 变量配置网络
ZTIDataAccess.vbs 提供 SQL 数据库查询能力

4. 常用扩展场景

  1. 在 ZTIGather.xml 增加自定义采集项(硬盘序列号、无线网卡信号);
  2. 利用采集到的MakeModel整机型号,实现按机型自动安装驱动 / 软件;
  3. 依靠 MAC 地址匹配 MDT 数据库,实现计算机名预设、OU 自动加域。

六、极简总结

  1. ZTIGather.wsf = MDT 自动化部署的「信息采集与规则合并中枢」;所有自动化分支判断依赖它输出的全局变量。
  2. 强依赖 ZTIUtility.vbs;采集硬件、有线 / 无线网卡、DHCP 租约、固件信息,支持联动 MDT SQL 数据库。
  3. 分 WinPE 预部署、系统部署后两个执行阶段;采集硬件变量优先级高于配置文件。
  4. 多网卡环境可区分有线以太网、Wi-Fi 无线网卡,分别读取 MAC 与 DHCP 租约信息,是终端资产自动化识别基础。
  5. 排障第一入口:优先查看 ZTIGather.log,确认硬件信息、网卡 MAC、数据库查询是否正常采集。

ZTIGather.wsf 完整演进史(MDT 全版本分阶段迭代)

总演进主线

ZTIGather.wsf 伴随 BDD 2007 诞生,是 MDT 整套部署脚本体系的核心采集引擎,整体迭代分为 5 大阶段:
  1. BDD 2007 / MDT 2008:初代基础采集脚本,仅基础硬件枚举;
  2. MDT 2010 / MDT 2012 Update1:完善磁盘、网络、BIOS 采集,新增 UEFI 初步适配;
  3. MDT 2013 系列:重构 WMI 容错逻辑、分区表 GPT/MBR 识别、离线注册表 hive 读取;
  4. MDT 8443 / 8450 / 8456(Win10 全生命周期):安全固件采集(TPM、SecureBoot)、SSD 介质识别、变量重写机制、ZTIGather.xml 标准化变量管控;
  5. MDT 8456 长期稳定版(2019 至今,适配 Win11/Server2022):补齐 Win11 硬件合规采集、容器 / 虚拟化信息、安全审计日志优化,底层架构冻结,仅修复 bug 与适配新硬件 WMI 类。
底层不变核心:始终基于 VBScript+WSH,依赖 ZTIUtility.vbs 做系统接口封装,分 WinPE 预部署、OS 部署后双阶段采集,全局 oEnvironment 变量池共享采集数据。

阶段 1:初代基础版 — BDD 2007 / MDT 2008(2007–2010)

诞生背景

BDD(Business Desktop Deployment)升级为 MDT,废弃早期批处理采集逻辑,统一改用 WSF 脚本实现硬件采集,ZTIGather.wsf首次作为独立采集脚本落地。

新增核心能力

  1. 基础 WMI 硬件枚举:CPU、内存、BIOS 序列号、MAC 地址、硬盘基础容量;
  2. 简单全局变量缓存,输出SerialNumberModelMACAddress用于计算机自动命名;
  3. 基础日志写入 BDD.log,仅记录采集成功 / 失败,无原始 WMI 查询语句留存;
  4. 仅支持 Legacy BIOS MBR 分区识别,无 UEFI、GPT 相关逻辑;
  5. 无离线注册表读取,仅在线系统读取 HKLM 基础系统信息;
  6. 无专用ZTIGather.xml,变量无标准化管控,所有采集变量硬编码在脚本内。

底层缺陷(后续版本全部重构修复)

  1. WMI 查询无异常捕获,工控机缺失硬件 WMI 类直接中断部署;
  2. 磁盘仅读取总容量,无法区分 SSD/HDD、无分区类型识别;
  3. 所有变量一次写入永久锁定,无覆盖重写机制,自定义规则无法修正采集值;
  4. 日志极简,无法溯源硬件识别异常,排错难度极高;
  5. 不支持多网卡、多硬盘设备,仅读取第一块网卡、第一块磁盘。

适用系统:Windows XP、Vista、Server 2008

阶段 2:功能扩充版 — MDT 2010 / MDT 2012 Update1(2010–2013)

重大迭代更新

  1. 多硬件兼容重构
     
    支持多网卡、多硬盘遍历,自动汇总全部 MAC 地址存入MACAddressList;区分 USB 移动磁盘与内置硬盘,规避自动分区误格式化 U 盘。
  2. UEFI/GPT 初步适配
     
    新增 WMI 查询Win32_DiskPartition识别 GPT 分区表,输出IsUEFIDiskType全局变量,支撑新一代 64 位固件部署。
  3. 离线注册表 Hive 挂载逻辑
     
    WinPE 阶段自动reg load目标系统 SYSTEM/SOFTWARE hive,读取离线系统版本、时区、预装驱动配置,补齐预部署阶段系统信息采集。
  4. 网络采集完善
     
    采集网关、DHCP 状态、IP 子网、网卡厂商型号,用于机房网段资产区分。
  5. 容错机制小幅优化
     
    单硬件 WMI 查询失败仅打印警告,不再终止整套采集流程。

仍缺失能力

无 TPM、安全启动采集;无法识别 SSD 固态介质;变量仍不可覆盖;无标准化ZTIGather.xml;不支持 Server 角色、软件清单采集。

适用系统:Win7、Server 2008 R2、早期 Win8

阶段 3:架构重构基准版 — MDT 2013 / MDT 2013 Update 1(2013–2016)

本阶段是 ZTIGather 底层架构分水岭,大量核心机制重构,奠定至今通用的采集框架。

1. 变量管控体系革新(标志性更新)

新增配套ZTIGather.xml文件,统一定义全部采集变量、数据类型、overwrite="true" 可覆盖标记Microsoft ...;
 
解决历史版本 “一次写入不可修改” 缺陷,CustomSettings.ini、任务序列可覆盖硬件采集原生值,适配机房统一资产命名规则。

2. WMI 底层查询全面加固

  • 分层遍历 WMI 命名空间:root\cimv2root\wmiroot\Microsoft\Windows\DeviceGuard
  • 封装重试逻辑,WMI 连接超时自动重连,老旧工控机兼容性大幅提升;
  • 日志完整记录原始 WQL 查询语句、返回原始字段,运维可完整溯源硬件识别异常。

3. 磁盘底层采集深度升级

通过 DeviceIoControl 底层 API 补充 WMI 缺失存储信息:
  • 识别 ESP/MSR 恢复分区、GPT 分区 GUID;
  • 硬盘唯一序列号、卷 UUID 采集;
  • 区分 NVMe/SATA 机械硬盘,新增IsSSD布尔变量,自动适配分区对齐、页面文件策略。

4. 双阶段采集标准化落地

明确拆分:
 
1)WinPE 预部署采集(仅硬件、固件、磁盘、网卡);
 
2)OS 安装完成后二次采集(系统版本、补丁、已安装软件、域信息、时区)。

5. 软件与服务器配套采集

新增Win32_Product枚举已安装应用清单;采集 Server 角色 / 功能清单,支撑任务序列自动安装服务器组件。

适用系统:Win8.1、Server 2012 R2

阶段 4:安全固件全采集版 — MDT 8443 / 8450 / 8456(2016–2019,Win10 完整支撑周期)

MDT 8456 为最终官方完整功能版本,ZTIGather.wsf 安全采集能力达到顶峰,新增大量现代安全硬件指标,适配 Win10、Server2016/2019。

1. 固件安全类全套 WMI 采集(核心新增)

新增三大安全硬件全局变量,支撑 BitLocker、安全基线自动化校验:
  • TPM:TPMVersionTPMEnabledTPMReady,读取Win32_Tpm
  • 安全启动:SecureBootEnabledSecureBootCapable,查询Win32_SecureBoot
  • 固件模式:完善IsUEFI判定逻辑,区分纯 UEFI、兼容 Legacy 混合固件。

2. 虚拟化 / 虚拟机硬件识别

采集虚拟机厂商(VMware/Hyper-V/KVM)、虚拟磁盘、虚拟网卡标识,自动过滤物理服务器专属驱动集。

3. 变量持久化优化

采集完成自动写入Variables.dat二进制缓存,部署重启无需重复扫描硬件,缩短部署等待时间。

4. 大量生产 bug 修复

  • 修复多 SSD 硬盘排序错乱导致自动分区误选大容量数据盘;
  • 修复离线注册表卸载失败导致注册表锁死;
  • 修复 TPM 1.2 设备 WMI 查询空值崩溃;
  • 修复ZTIGather.xml BDEDisablePreProvisioning 字段识别异常Microsoft ...。

5. 日志安全审计增强

日志区分 INFO/WARNING/ERROR 三级,完整记录 TPM、安全启动、磁盘分区敏感采集行为,可用于终端资产安全基线审计。

适用系统:Win10 全版本、Server2016、Server2019

阶段 5:兼容维护冻结版 — MDT 8456 长期支持(2019 至今,适配 Win11/Server2022/2025)

微软停止更新 MDT 主程序,仅发布 ADK 配套补丁修复,ZTIGather.wsf底层架构完全冻结,不再新增采集框架,仅做适配性小幅修改。

迭代内容(无架构重构,仅适配与加固)

  1. Win11 硬件合规校验采集补齐
     
    扩充 CPU 兼容列表判断、最低内存 4GB、存储 64GB 校验变量,任务序列可自动拦截不满足 Win11 部署条件的裸机;
  2. Server 2022 适配
     
    适配新一代 RAID/HBA 卡 WMI 存储类,新增 Server 2022 专属角色识别;
  3. 容器 / 沙箱环境采集优化
     
    区分 Windows Sandbox、Server 容器硬件环境,隔离宿主机与容器采集变量;
  4. 安全加固修复
     
    封堵自定义 Hook 篡改采集变量的漏洞,强化ZTIGather.xml权限校验;
     
    修复高安全 HVCI 环境下 WMI 读取 TPM 信息权限不足问题;
  5. 无新增底层采集逻辑、无新增全局变量大类,完整向下兼容 MDT2013 以来所有规则、任务序列。

兼容边界

MDT 8456 脚本可直接复用在 Win11 24H2、Server 2025,仅需配套对应 ADK;旧版 MDT 自定义规则、Bootstrap.ini/CustomSettings.ini 无需改写即可兼容。

分维度演进对比速查表

1. 核心机制引入时间线

核心功能 首次出现版本 作用
初代基础硬件 WMI 采集 BDD2007/MDT2008 基础资产序列号、机型采集
UEFI/GPT 分区识别 MDT2012 Update1 新一代固件部署支撑
离线注册表 Hive 读取 MDT2012 Update1 WinPE 离线系统信息采集
ZTIGather.xml 标准化变量 + 覆盖机制 MDT2013 自定义规则可改写硬件采集值
SSD / 多磁盘底层 DeviceIoControl 采集 MDT2013 自动分区、存储优化自适应
TPM/SecureBoot 安全固件采集 MDT8443 BitLocker、安全基线自动化
Variables.dat 变量持久化缓存 MDT8450 减少重复硬件扫描耗时
Win11 硬件合规判定采集 MDT8456(长期维护补丁) 拦截不符合 Win11 最低硬件终端

2. 底层技术演进脉络

  1. 采集接口:纯 WMI → WMI + 底层 DeviceIoControl 磁盘 API + 离线注册表挂载;
  2. 变量管控:硬编码不可修改 → ZTIGather.xml 标准化、支持覆盖重写;
  3. 容错能力:单查询失败直接中断 → 分级捕获、跳过异常硬件、日志告警不中断流程;
  4. 日志体系:极简成功 / 失败日志 → 完整 WQL 语句、三级分级、安全审计全链路日志;
  5. 固件安全采集:无安全硬件逻辑 → TPM、SecureBoot、HVCI、虚拟化全套识别。

3. 战略定位演进总结

  1. BDD2007-MDT2010:辅助采集工具,仅满足基础计算机命名需求;
  2. MDT2012-MDT2013:部署核心中枢,硬件数据驱动分区、加域、系统配置全流程自动化;
  3. MDT8443-8456:资产 + 安全双维度采集引擎,兼顾部署自动化与终端安全基线审计;
  4. 2019 至今长期维护:冻结架构、全兼容维护,作为 Win10/Win11/Server 全系列通用采集底层,仅适配新硬件与安全补丁。

关键跨版本兼容说明

  1. 所有新版 ZTIGather.wsf 向下兼容旧版 CustomSettings.ini、任务序列;仅升级部署共享时,必须执行「Update Deployment Share」同步替换脚本;
  2. MDT2013 及以上引入的ZTIGather.xml为配套依赖,低版本无此文件,升级后不可删除;
  3. 底层 WMI 查询命名空间、全局变量命名全版本统一,机房批量规则、资产命名模板无需随 MDT 版本改写。

ZTIGather.wsf 完整底层原理(MDT 核心信息采集脚本)

一、基础定位与运行时序

1. 文件路径与加载时机

文件存放路径:DeploymentShare\Scripts\ZTIGather.wsf,属于 Lite Touch 部署核心组件。
 
执行时序
  1. WinPE 加载完成、挂载 MDT 部署共享、读取 Bootstrap.ini/CustomSettings.ini
  2. LiteTouch.wsf 主脚本初始化后,第一顺位调用 ZTIGather.wsf
  3. 分两次采集:
    • 阶段 1:WinPE 预部署环境采集(硬件、BIOS、磁盘、网卡、内存、序列号);
    • 阶段 2:目标操作系统安装完成、首次进入桌面后二次采集(软件、系统版本、域信息、已安装补丁)。

2. 运行依赖

  • 宿主引擎:Windows Script Host cscript.exe(控制台无弹窗模式);
  • 依赖库:同目录 ZTIUtility.vbs(MDT 通用工具类,封装 WMI、注册表、文件读写、变量操作);
  • 权限:WinPE 内核 SYSTEM 最高权限,可全量读取系统 WMI、硬件抽象层、注册表、磁盘驱动信息;
  • 输出载体:BDD.log 主部署日志,同时填充全局部署变量(存入内存环境对象,供任务序列、分区脚本、加域脚本调用)。

二、四层底层执行架构

plaintext
入口主流程 → ZTIUtility.vbs 工具封装层 → WMI/Win32 API/注册表/磁盘读取层 → 日志输出 + 全局变量缓存

层级 1:脚本入口主逻辑(ZTIGather.wsf 自身代码)

  1. 初始化全局 oEnvironment 对象(MDT 内存变量容器,键值对存储所有采集信息);
  2. 加载依赖 ZTIUtility.vbs,实例化工具对象 oUtility
  3. 按固定顺序串行执行 8 大类采集函数;
  4. 每采集一项数据:
    • 写入 oEnvironment 全局变量;
    • 调用日志方法写入 BDD.log,标注采集来源(WMI / 注册表 / 磁盘);
  5. 采集完成后持久化变量:写入本地 %TEMP%\DeployRoot\Variables.dat,后续所有部署脚本共享硬件 / 系统数据。

层级 2:ZTIUtility.vbs 底层封装层(核心中间件)

ZTIGather 不直接调用原生系统接口,全部通过工具类封装函数中转,屏蔽 WinPE / 完整系统环境差异:
  1. WMI 封装:oUtility.QueryWMI(),自动连接 root\cimv2root\wmiroot\Microsoft\Windows\DeviceGuard 等命名空间,统一处理 WMI 查询异常、空值、权限报错;
  2. 注册表封装:oUtility.RegRead(),兼容 WinPE 离线注册表 hive 挂载与在线系统注册表读取;
  3. 文件 / 磁盘封装:磁盘分区、盘符、卷序列号、SSD/HDD 判断封装;
  4. 日志封装:oUtility.Log(),统一日志格式、时间戳、分类标记(INFO/WARNING/ERROR);
  5. 变量操作:读写全局部署环境变量,跨脚本数据共享。

层级 3:四大原生系统信息采集接口(数据来源底层)

(1)WMI Win32 类查询(90% 硬件信息来源)

脚本批量遍历标准 CIM/WMI 类,枚举硬件抽象层硬件数据:
  • 系统基础:Win32_ComputerSystem(内存、机型、制造商)、Win32_BIOS(BIOS 版本、序列号、出厂日期)、Win32_OperatingSystem
  • 磁盘存储:Win32_DiskDrive(硬盘型号、容量、SSD 识别、介质类型)、Win32_LogicalDiskWin32_DiskPartition
  • 网络:Win32_NetworkAdapterConfiguration(MAC、IP、网关、DHCP 状态、网卡型号);
  • CPU:Win32_Processor(核心数、线程、主频、CPU 型号);
  • 固件安全:Win32_SecureBootWin32_Tpm(TPM 2.0 状态、安全启动开关);
  • 外设:Win32_PnPEntity 即插即用硬件枚举。

(2)离线 / 在线注册表读取

  1. WinPE 阶段:挂载目标磁盘 SOFTWARE/SYSTEM 离线 hive,读取预装驱动信息、系统预设配置;
  2. 系统部署完成后:在线读取 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,获取系统版本、安装日期、已注册产品 ID、补丁版本;
  3. MDT 自身配置:读取 CustomSettings.ini 预设变量,与采集硬件数据合并。

(3)磁盘底层接口(DeviceIoControl 封装)

通过工具类调用底层磁盘控制 API,绕过 WMI 限制获取精准存储信息:
  • 硬盘唯一序列号、卷 GUID、分区类型(GPT/MBR)、ESP/MSR 分区识别;
  • 判断固态硬盘、机械硬盘、NVMe/ SATA 介质区分;
  • 读取磁盘总容量、可用空间,用于自动分区脚本自动计算分区大小。

(4)系统文件与环境变量读取

  1. 读取 c:\Windows\System32\winver.exe 资源,提取操作系统完整版本号;
  2. 读取系统环境变量、域环境变量,获取工作站域名、登录账户;
  3. 读取 setupapi.dev.log 驱动安装日志,采集硬件驱动匹配状态。

层级 4:数据输出与持久化层

两类数据输出载体,同步生成:
  1. 内存全局环境对象 oEnvironment
     
    所有采集字段存入键值对变量,例:
     
    SerialNumberModelOSDComputerNameMacAddressTotalRAMIsSSDTPMVersion
     
    后续分区脚本、加域脚本、软件安装脚本、镜像捕获脚本直接读取变量,实现自动化命名、自动分区、资产台账录入。
  2. 持久化日志与变量文件
    • 文本日志:Bdd.log,每行携带时间戳、采集函数、原始 WMI 查询语句、原始返回值;
    • 变量缓存文件:Variables.dat,二进制缓存硬件资产数据,部署重启后无需重新采集;
    • 可选:配合 SLShare 参数自动上传日志至服务器共享目录,统一资产审计。

三、分阶段采集核心逻辑

阶段 1:WinPE 预部署采集(裸机未装系统)

  1. 无目标系统注册表,仅依靠 WMI + 磁盘底层 API;
  2. 重点采集硬件资产:序列号、机型、CPU、内存、硬盘数量、MAC 地址、TPM、安全启动、分区表类型;
  3. 生成资产变量 %SerialNumber%,用于自动计算机命名 OSDComputerName=PC-%SerialNumber%
  4. 识别磁盘介质(SSD/HDD),自动适配分区对齐、页面文件大小等参数。

阶段 2:目标 OS 安装完成后二次采集

  1. 加载本地系统注册表,读取系统版本、补丁、产品密钥、安装日期;
  2. 枚举已安装软件 Win32_Product,记录预装应用清单;
  3. 读取域状态、本地管理员配置、网络配置;
  4. 补全资产台账完整信息,用于资产报表、终端基线校验。

四、关键底层核心机制

1. 异常容错机制(适配各类异构服务器 / 工控机)

  1. WMI 查询容错:单硬件类查询失败(老旧工控机无 TPM、无安全启动 WMI 类)自动捕获错误,写入警告日志,不中断整体采集流程;
  2. 空值填充:硬件读取无结果时自动填充 UNKNOWN,避免下游脚本变量空值报错;
  3. 分命名空间重试:部分硬件信息仅存在 root\wmi,查询 root\cimv2 无数据自动切换命名空间重试。

2. 变量共享跨脚本通信机制

MDT 所有脚本(ZTIDiskpart.wsf、ZTIJoinDomain.wsf、LiteTouch.wsf)共用同一个 oEnvironment 全局对象:
  1. ZTIGather 采集写入变量;
  2. 其他脚本直接读取,无重复硬件扫描,提升部署效率;
  3. 变量可写入 CustomSettings.ini 覆盖预设值,实现硬件自适应配置。

3. 日志标准化底层逻辑

oUtility.Log() 统一日志格式,每条日志固定结构:
 
[时间] [日志级别] [采集函数名] 原始采集语句 | 采集结果
 
示例:
 
[2026-07-15 10:20:30] INFO ZTIGather:QueryWMI SELECT SerialNumber FROM Win32_BIOS | SerialNumber=SN78945612
 
蓝队 / 运维可通过日志完整溯源每一条硬件数据的原始来源,排查硬件识别异常。

4. 离线注册表 hive 挂载逻辑(WinPE 特有)

裸机部署时,目标系统分区无运行注册表,ZTIGather 通过工具类执行:
  1. reg load HKLM\TARGET c:\Windows\System32\config\SYSTEM
  2. 读取离线系统配置;
  3. 采集完成自动 reg unload 卸载 hive,避免注册表锁死。

五、典型采集变量对应底层数据源对照表

部署全局变量 底层采集来源 用途
SerialNumber Win32_BIOS.SerialNumber 自动计算机命名、资产台账
Model Win32_ComputerSystem.Model 硬件机型识别、驱动匹配
MACAddress Win32_NetworkAdapterConfiguration.MACAddress 资产唯一标识、批量终端区分
TotalRAM Win32_PhysicalMemory 汇总计算 自动设置页面文件大小
IsSSD Win32_DiskDrive.MediaType=0 优化分区、关闭碎片整理
TPMVersion Win32_Tpm.SpecVersion 判断 BitLocker 加密支持
TimeZone 注册表 HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation 自动设置系统时区
OSVersion Win32_OperatingSystem.Version 区分 Server / 桌面系统,适配角色安装

六、上下游脚本联动底层链路

plaintext
LiteTouch.wsf(部署主入口)
        ↓
ZTIGather.wsf(硬件/系统信息采集,填充全局变量oEnvironment)
        ↓
ZTIDiskpart.wsf(读取IsSSD/TotalRAM自动生成分区脚本)
ZTIWindowsSetup.wsf(读取OSVersion自动匹配系统镜像)
ZTIJoinDomain.wsf(读取SerialNumber/OSDComputerName完成加域命名)
ZTICleanup.wsf(二次采集,写入完整资产日志回传服务器SLShare)

七、运维 / 红蓝对抗延伸底层特性

  1. 取证价值:Bdd.log 完整记录所有 WMI 查询、注册表读取行为,可溯源部署时硬件、系统原始状态,用于终端资产审计、入侵溯源;
  2. 漏洞风险点:脚本依赖 WMI 无严格权限过滤,若任务序列存在恶意自定义脚本,可篡改 oEnvironment 变量伪造硬件资产信息;
  3. 性能底层逻辑:所有采集串行执行,老旧低速 RAID 服务器、工控机采集耗时会拉长部署前置等待时间,可注释无关 WMI 类缩短采集耗时。

 

ZTIGather.wsf 全维度应用场景汇总(企业运维 + 安全攻防 + 定制开发)

ZTIGather.wsf 是 MDT 部署流水线数据中枢,所有自动化逻辑、资产采集、安全校验、故障排查均依赖它输出的硬件 / 系统全局变量,场景分为六大类:批量自动化部署、IT 资产全生命周期管理、系统镜像捕获与标准化、安全基线与合规校验、运维排错取证、红蓝对抗风险场景,配套落地案例与底层数据逻辑。

一、场景 1:企业 PXE / 离线 U 盘全自动无交互批量部署(核心原生场景)

适用环境

园区办公 PC、机房工控机、机架式 Windows Server 2022/2019、云本地虚拟主机,大规模标准化装机。

落地能力与脚本作用

  1. 自动计算机命名(零人工输入)
     
    ZTIGather 采集 SerialNumberMACAddress、主板型号变量,配合 CustomSettings.ini 规则自动生成主机名:
    ini
    OSDComputerName=SRV-%SerialNumber%
    OSDComputerName=PC-%MACAddress:~-6%
    流程:PXE 启动→WinPE 加载 ZTIGather 读取 BIOS 序列号→写入全局变量→后续分区 / 加域脚本直接读取,无需人工弹窗输入主机名。
  2. 硬件自适应智能分区(SSD/HDD/ 多磁盘自动适配)
     
    采集 IsSSDTotalRAMDiskType(GPT/MBR)、硬盘总容量变量,驱动 ZTIDiskpart.wsf 动态生成分区脚本:
    • SSD:关闭页面文件、4K 对齐、缩小恢复分区;
    • 机械硬盘:自动分配内存 1.5 倍页面文件;
    • UEFI 设备自动创建 ESP/MSR 分区,Legacy 仅单引导分区。
  3. 驱动集自动匹配,杜绝蓝屏
     
    采集 Model(主板机型)、CPU、网卡 VID/PID、RAID 卡型号,匹配 MDT 驱动配置集 DriverSelectionProfile,仅加载对应硬件驱动,避免驱动冲突蓝屏。
  4. 全自动域 / 工作组分流部署
    • 服务器:采集机型前缀自动走加域流程,读取 MachineObjectOU 加入服务器 OU;
    • 办公 PC:自动加入工作站 OU;
    • 工控隔离设备:识别工控主板型号,跳过加域,自动写入指定工作组。
  5. 底层时序
     
    WinPE 启动 → Bootstrap.ini 挂载共享 → 执行 ZTIGather 采集全量硬件变量 → 任务序列读取变量执行分区 / 驱动 / 系统安装 / 加域。

典型案例

制造业园区 2000 台办公 PC 批量装机,全程无人值守,依靠 ZTIGather 硬件数据实现自动命名、分区、驱动匹配,单批次部署人力缩减 90%。

二、场景 2:IT 资产自动化盘点与 CMDB 数据同步

核心价值

部署阶段一次性采集全维度硬件、系统、软件资产,自动入库,替代人工盘点、第三方扫描工具。

采集输出资产字段(全部存入 BDD.log+Variables.dat)

  1. 硬件资产:BIOS 序列号、整机型号、CPU 型号 / 核心数、内存总容量、硬盘数量 / 容量 / SSD 标识、MAC 地址、TPM 版本、BIOS 固件版本;
  2. 系统资产:OS 版本、安装日期、时区、语言、补丁清单、本地管理员状态;
  3. 网络资产:多网卡 MAC、IP 网段、网关、DHCP 状态;
  4. 安全资产:SecureBoot 开关、TPM 启用状态、BitLocker 就绪标识。

落地流程

  1. MDT 部署完成后 ZTIGather 二次采集完整资产数据;
  2. 配置 SLShare 将 BDD.log 自动回传至服务器日志共享;
  3. 编写解析脚本提取日志内资产字段,自动同步企业 CMDB / 资产台账;
  4. 支持区分物理机 / 虚拟机(采集虚拟机厂商 VMware/Hyper-V 标识),实现虚实资产分类统计。

适用行业

政企、医院、制造业机房、IDC 服务器机房,满足等保资产台账审计要求。

三、场景 3:系统母盘镜像捕获标准化(参考镜像制作)

业务需求

制作统一标准化 Windows Server/Win11 LTSC 母盘,过滤差异化硬件信息,封装通用镜像。

ZTIGather 核心作用

  1. 捕获前硬件校验
     
    运行 ZTIGather 读取整机硬件信息,校验母盘基准硬件,避免使用特殊驱动硬件制作镜像;
  2. 差异化硬件信息清除标记
     
    采集序列号、MAC 等唯一硬件标识,任务序列根据变量自动清理 Sysprep 封装时的硬件残留;
  3. 软件清单固化
     
    二次采集阶段枚举 Win32_Product 已预装软件清单,写入镜像说明文档,统一各批次母盘预装软件基线;
  4. 镜像自动分类
     
    采集 OS 版本变量,自动区分服务器镜像、桌面终端镜像,归档至 MDT 镜像库对应目录。

配套任务序列逻辑

CaptureOnly 捕获任务 → ZTIGather 采集硬件与软件清单 → Sysprep 封装 → 捕获 WIM 镜像 → 导出资产基线文档。

四、场景 4:终端安全基线自动化校验与合规部署(等保 / 安全运维)

ZTIGather 采集的固件、加密、系统变量,驱动任务序列自动执行安全合规加固,落地 CIS 基线、等保 2.0 要求。

细分安全子场景

  1. Win11 硬件合规拦截
     
    采集 TPMVersionTotalRAMIsUEFISecureBootCapable,任务序列增加判断:
    • TPM<2.0 / 内存 < 4GB / 不支持安全启动 → 直接终止部署,弹窗拦截不满足 Win11 合规硬件;
  2. BitLocker 自动加密前置校验
     
    读取 TPMReadySecureBootEnabled 变量,仅硬件达标设备自动执行 ZTIBde.wsf 全盘加密,不达标设备跳过并写入安全告警日志;
  3. 服务器安全基线自动配置
     
    根据 Model(服务器机型)变量自动安装防火墙规则、关闭高危端口、启用 LSA 保护、配置密码策略;
  4. 虚拟化隔离基线区分
     
    识别 Hyper-V/VMware 虚拟机,自动关闭物理机专属安全策略(如硬盘物理加密、硬件防火墙),避免基线冲突;
  5. 安全审计日志留存
     
    所有 TPM、安全启动采集行为完整记录至 BDD.log,可提供给等保测评机构溯源终端安全硬件状态。

五、场景 5:MDT 部署故障排查、硬件兼容性取证(运维排错)

场景 1:装机蓝屏、驱动不兼容定位

  1. ZTIGather 完整日志记录 WMI 原始查询语句、硬件型号、VID/PID;
  2. 运维读取 BDD.log 中 Model、硬盘、网卡采集记录,快速定位缺失驱动的硬件;
  3. 区分 SSD/NVMe/RAID 卡存储设备,排查磁盘识别失败、分区报错问题。

场景 2:部署变量异常、自动命名失效排查

  1. 日志输出 SerialNumber 采集结果(UNKNOWN 代表主板无法读取序列号);
  2. 查看 MACAddress 采集条目,排查多网卡识别错乱导致主机名重复;
  3. 读取 Variables.dat 缓存文件,验证全局变量是否正常写入,定位脚本读取故障。

场景 3:离线工控机无网络部署取证

离线 U 盘部署无服务器日志回传,BDD.log 本地留存 ZTIGather 全部采集记录,后期插盘导出日志完成硬件资产、部署过程溯源。

场景 4:模拟部署测试(无需重装系统)

微软官方支持单独执行 ZTIGather 做采集模拟:
cmd
cscript ZTIGather.wsf
无需完整 PXE 部署流程,直接输出当前机器硬件变量,快速测试自定义规则、驱动匹配逻辑,大幅缩短 MDT 规则调试周期Microsoft ...。

六、场景 6:混合架构联动:MDT + SCCM/Intune 联动部署

数据互通逻辑

  1. ZTIGather 采集本地软硬件清单,导出匹配表;
  2. 联动 SCCM 软件清查数据库,根据采集到的预装软件自动推送缺失业务程序;
  3. 终端部署完成后,资产变量同步至 Intune,实现桌面设备统一云端基线管控Microsoft ...。

落地优势

一套采集数据源同时支撑本地 MDT 装机、云端终端管理,无需两套独立资产扫描工具。

七、风险对抗场景:红蓝对抗、恶意篡改检测(蓝队防御视角)

1. 恶意篡改部署变量风险检测

红队可自定义脚本 Hook / 覆盖 ZTIGather 输出的全局变量,伪造硬件序列号、跳过 TPM 安全校验、绕过 BitLocker 加密流程;
 
防御手段:比对 BDD.log 原始 WMI 采集日志与最终 Variables.dat 变量,发现不一致则判定篡改,触发安全告警。

2. 无文件后门植入溯源取证

MDT 部署是内网批量接入入口,若恶意脚本植入任务序列,ZTIGather 完整采集日志可作为数字证据:
  • 记录每台终端接入时原始硬件标识;
  • 完整留存部署全流程操作时序,溯源恶意终端入网时间、硬件资产,支撑入侵事件调查取证。

3. 恶意设备内网准入拦截

通过 ZTIGather 采集 MAC、主板序列号白名单,任务序列判断变量不在授权资产列表则终止部署,阻断外来未知硬件接入内网。

八、小众拓展场景

  1. 工控机专用固化部署
     
    工业老旧无 UEFI 工控机,ZTIGather 兼容 Legacy MBR、老旧 WMI 硬件类,采集工控专用串口、采集卡硬件信息,适配产线自动化设备装机;
  2. 离线涉密隔离内网部署
     
    无互联网、无域隔离涉密机房,U 盘离线部署,ZTIGather 本地完成全资产采集,日志离线留存,不产生任何网络传输,满足涉密网络规范;
  3. 镜像捕获批量差异化软件预装
     
    根据 ZTIGather 读取的机型变量,自动匹配对应业务软件包:办公机装 Office,服务器装数据库 / 中间件,工控机组态软件,一套任务序列适配全品类终端。

九、各场景核心能力对照表

应用场景 ZTIGather 核心输出变量 核心业务收益
全自动批量部署 SerialNumber、Model、IsSSD、DiskType 无人值守、自动分区 / 驱动 / 命名
IT 资产 CMDB 盘点 CPU、内存、硬盘、TPM、MAC、OS 版本 一次性采集完整资产,满足等保台账
母盘镜像捕获 软件清单、唯一硬件标识 标准化封装,清除硬件差异化信息
安全基线合规 TPMVersion、SecureBoot、TotalRAM 自动拦截不合规硬件、批量加密加固
部署故障排错 WMI 原始查询、硬件 VID/PID、变量日志 快速定位驱动、分区、命名报错根源
SCCM/Intune 联动 软件清单、整机硬件型号 统一资产数据源,混合云桌面管控
涉密 / 工控离线部署 本地完整日志、无网络采集 隔离内网合规装机、资产离线审计
红蓝对抗防御取证 全链路采集日志、原始硬件指纹 检测变量篡改、溯源恶意入网设备

 


ZTIGather.wsf 是 MDT (Microsoft Deployment Toolkit) 中的一个 VBScript 脚本,用于在部署过程中收集有关目标计算机硬件和软件环境的信息,并将这些信息记录在日志文件中。下面列出了一些常见的 ZTIGather.wsf 命令和其作用:

  1. /?: 显示帮助信息。
  2. /debug:true|false: 打开或关闭脚本调试模式。
  3. /bootsect: 指定系统分区上的引导扇区文件名。
  4. /imageminorversion: 设置镜像次要版本号。
  5. /imagetype: 设置镜像类型。
  6. /locale: 设置区域设置。
  7. /computername: 设置计算机名称。
  8. /osdcomputername: 将计算机名称写入环境变量 OSDComputerName 中。
  9. /build: 设置操作系统版本。
  10. /skipsidgen:true|false: 是否跳过安全标识符 (SID) 生成过程。
  11. /config: 指定 INI 文件,其中包含自定义配置信息。
  12. /mfg: 设置制造商。
  13. /model: 设置计算机型号。
  14. /serialnumber: 设置序列号。
  15. /uuid: 设置唯一的 Universally Unique Identifier (UUID)。
  16. /macaddress: 设置以逗号分隔的 MAC 地址列表。
  17. /ismobile:true|false: 设置计算机是否是移动设备。
  18. /keyboardlocale: 设置键盘区域设置。
  19. /timezone: 设置时区。
  20. /UserDataLocation: 指定存储用户数据的位置。

总之,通过 ZTIGather.wsf,管理员可以在部署过程中收集各种目标计算机的配置信息,并根据需要进行个性化配置和操作系统安装。这些命令提供了丰富的灵活性和扩展性,使得 MDT 部署规划和实施更加高效和便捷。


ZTIGather.wsf 全部启动参数完整示例、用法、场景说明

前置基础说明

  1. 执行载体:必须使用 cscript.exe 运行(控制台模式,避免弹窗),不支持 wscript;
  2. 运行权限:WinPE 环境 / 完整系统管理员 / SYSTEM 权限;
  3. 运行路径:默认在 DeploymentShare\Scripts\ 目录执行;
  4. 参数优先级:命令行传入参数 > ZTIGather.xml 预设 > WMI 硬件原生采集值,传入参数会直接覆盖自动采集的硬件 / 系统变量,适合批量自定义、调试、伪造资产信息。

一、通用基础模板(带调试日志,运维调试首选)

1. 查看内置帮助文档 /?

cmd
cscript ZTIGather.wsf /?
作用:打印所有支持启动参数、参数释义、语法规范,快速查阅参数列表。

2. 开启完整调试模式 /debug:true

cmd
cscript ZTIGather.wsf /debug:true
  • 效果:BDD.log 输出全量 WMI 查询堆栈、变量赋值过程、函数调用日志;
  • 适用场景:排查硬件采集失败、变量不生效、自动命名异常。

3. 关闭调试日志(生产部署默认)

cmd
cscript ZTIGather.wsf /debug:false

二、硬件资产覆盖参数示例(强制覆盖 WMI 自动采集结果)

适用于:硬件 BIOS 无法读取序列号、工控机 WMI 失效、批量统一伪装资产标识、测试任务序列。

完整硬件自定义组合命令

cmd
cscript ZTIGather.wsf /debug:true ^
/mfg:"Dell Inc." ^
/model:"OptiPlex 7010" ^
/serialnumber:"SN20260715001" ^
/uuid:"12345678-ABCD-EFGH-1234-567890ABCDEF" ^
/macaddress:"00:11:22:33:44:55,AA:BB:CC:DD:EE:FF" ^
/ismobile:false
参数说明:
  • /mfg:制造商,覆盖 Win32_ComputerSystem.Manufacturer
  • /model:机型,驱动匹配、资产台账核心变量;
  • /serialnumber:BIOS 序列号,直接覆盖 SerialNumber 全局变量,用于 OSDComputerName=PC-%SerialNumber%
  • /uuid:整机 UUID,唯一设备标识;
  • /macaddress:多网卡 MAC 逗号分隔,覆盖网卡自动采集;
  • /ismobile:true 标记笔记本 / 平板,false 代表台式机 / 服务器。

三、计算机命名相关参数(自动主机名强制赋值)

示例 1:直接指定本机计算机名

cmd
cscript ZTIGather.wsf /computername:"WG-SRV-005"

示例 2:写入部署全局变量 OSDComputerName(供分区 / 加域脚本读取,MDT 标准用法)

cmd
cscript ZTIGather.wsf /osdcomputername:"PC-SN20260001"
区别:
 
/computername:仅修改系统本地计算机名;
 
/osdcomputername:写入 MDT 内存环境变量 OSDComputerName,整个部署流水线共用,推荐 MDT 自动化使用。

四、系统区域与时区本地化参数

cmd
cscript ZTIGather.wsf ^
/locale:"zh-CN" ^
/keyboardlocale:"zh-CN;en-US" ^
/timezone:"China Standard Time"
  • /locale:系统 UI 语言、用户区域;
  • /keyboardlocale:多输入法布局,分号分隔;
  • /timezone:标准时区名称,自动写入系统注册表时区配置。

五、操作系统版本、镜像控制参数(镜像捕获 / 自定义镜像部署)

cmd
cscript ZTIGather.wsf ^
/build:"10.0.20348" ^
/imagetype:"Windows Server 2022 Standard" ^
/imageminorversion:2
  • /build:系统内部版本号,覆盖 Win32_OperatingSystem.Version
  • /imagetype:标记镜像类型(桌面 / 服务器 / Core 核心版);
  • /imageminorversion:镜像次要版本号,镜像归档分类使用。

六、SID 生成、用户数据控制参数

1. 跳过 SID 生成(母盘捕获专用,Sysprep 场景)

cmd
cscript ZTIGather.wsf /skipsidgen:true
  • /skipsidgen:true:封装母盘时跳过 SID 重置,避免镜像内 SID 冲突;
  • /skipsidgen:false:全新装机自动生成唯一 SID(默认值)。

2. 迁移用户数据路径(升级部署场景)

cmd
cscript ZTIGather.wsf /UserDataLocation:"D:\UserProfiles"
指定用户配置文件迁移存放分区,搭配用户数据迁移任务序列使用。

七、自定义配置文件加载 /config

可外置 ini 文件批量定义所有采集变量,无需超长命令行拼接参数

1. 自定义 config.ini 示例

ini
[Hardware]
Manufacturer=H3C
Model=H3C R4900 G5
SerialNumber=SRV2026001
IsMobile=false
[OS]
OSDComputerName=SRV-H3C-001
Locale=zh-CN
TimeZone=China Standard Time
SkipSIDGen=false

2. 加载自定义配置文件执行脚本

cmd
cscript ZTIGather.wsf /config:"D:\CustomConfig.ini" /debug:true

八、引导扇区参数 /bootsect(WinPE 分区修复、老旧 BIOS 设备)

cmd
cscript ZTIGather.wsf /bootsect:"bootmgr.exe"
指定系统分区引导程序文件名,Legacy MBR 老旧服务器修复引导分区专用,UEFI 环境极少使用。

九、完整综合生产示例(服务器全自动部署全套参数)

cmd
@echo off
cscript ZTIGather.wsf /debug:false ^
/config:"%DeployRoot%\Scripts\ServerCustom.ini" ^
/mfg:"H3C" ^
/model:"R4900 G5" ^
/serialnumber:"SRV-2026-0715-001" ^
/osdcomputername:"WG-SRV-%SerialNumber%" ^
/locale:"zh-CN" ^
/timezone:"China Standard Time" ^
/keyboardlocale:"zh-CN" ^
/ismobile:false ^
/skipsidgen:false ^
/imagetype:"Windows Server 2022 Standard" ^
/build:"10.0.20348"

十、离线测试专用示例(无需 PXE 部署,本地电脑模拟采集)

本地电脑直接执行,模拟自定义硬件资产,调试任务序列命名、分区规则:
cmd
cscript ZTIGather.wsf /debug:true ^
/model:"ThinkCentre M90t" ^
/serialnumber:"TEST-PC-0001" ^
/osdcomputername:"TEST-PC-%SerialNumber%"

十一、关键使用规则总结

  1. 参数覆盖优先级
     
    命令行参数 > /config 配置文件 > ZTIGather.xml > WMI自动硬件采集
  2. 字符串带空格必须用英文双引号包裹;
  3. 多参数换行使用 ^ 作为换行续行符(cmd 脚本);
  4. 布尔参数仅支持 true / false 小写;
  5. 所有参数仅当前脚本执行周期生效,不持久写入 BIOS / 硬件,仅修改 MDT 内存环境变量;
  6. 红蓝对抗风险提示:红队可通过传入 /serialnumber /model 篡改资产变量,绕过硬件白名单、TPM 合规校验规则。

 

posted @ 2023-05-21 01:53  suv789  阅读(156)  评论(0)    收藏  举报