透视
Hot-Point Perspective
D
I G I T C W 热点
144DIGITCW
2019.11
1    研究背景
在现有的办公生产环境中计算机通常采用Windows 操作系统。目前ssd 固态硬盘价格下降,配置有固态硬盘的计算机逐渐增多,很多使用固态硬盘的计算机还配置了大容量的机械硬盘,通常ssd 固态硬盘安装操作系统而用机械硬盘存储资料。
在Windows 系统运维实践中,经常有全新安装和系统故障后重新安装操作系统的需求,大中型企业常采用WDS (Windows 自带的部署服务)和MDT (Microsoft Deployment Toolkit )相结合的方案。全新安
装操作系统常常会牵涉到硬盘的重新分区,在多硬盘计算机条件下,部署过程经常会出现安装操作系统位置紊乱的问题。在计算机原有机械硬盘存储有资料的情况下,往往会造成灾难性的结果。因此,本文就该问题提出了采用WDS 和MDT 部署过程中自动识别并选择固态硬盘,正确进行固态硬盘分区并将操作系统按要求安装到固态硬盘的解决方案。
2    多硬盘条件下存在的部署问题
(1)无法确认安装硬盘。在客户计算机只有一块硬盘时通常将系统安装到硬盘的第一可用分区。而对于存在ssd 或者NVMe 的双硬盘计算机,将操作系统安装到什么硬盘及分区将成为一个问题,如果我们本打算将系统安装到固态硬盘,但因为不同电脑其固态硬盘对应的diskindex 值是有区别的(可能是0,也可能是1),可能会产生将操作系统安装在机械硬盘当中的结果。所以在部署过程中为保证系统的安装位置正确,必须首先正确识别固态硬盘。(2)无法确认安装分区。对于存在双硬盘的计算机,即使选定了安装硬盘,需将操作系统安装到选定硬盘的第一可用分区,但在部署PE 状态下拟安装的目标分区可能逻辑分区名为C :,也可能为D :或其他分区号。
3    多硬盘条件下的ssd 识别
Mdt 部署首先执行的一个步骤就是收集大量不同源的信息,这些源包括WMI 调用和MDT 配置文件bootstrap.ini 和Customsettings.ini ,该信息作为变量进行收集和存储,用于整个部署过程的控制,md
t 还支持调用外部VBScript 脚本作为收集过程的一部分,这个脚本名为UserExit 脚本。
Mdt 部署序列中有两个相关变量,OSDDiskIndex 决定将操作系统安装到哪块硬盘,Osdisk 决定安装到哪个分区,WMI 调用是部署过程中自动到两个变量正确值唯一可用的方法。庆幸的是,微软提供了存储管理类,此类名为MSFT_PhysicalDisk ,作为存储管理类,有丰富的获取硬盘信息的属性和方法,其bustype 属性可识别存储接口总线类型是sas 、sata 、还是NVMe ,其MediaType 属性可识别硬盘类型是HDD 还是SSD 。
(1)在外部脚本userexit 中Selectdisk 函数利用WMI 调用收集MSFT_PhysicalDisk 信息,获取了SSD 的硬盘ID ,以及我们需要的OSDDiskIndex 值。
Set Wmi = GetObject ("Winmgmts :\\.\Root\Microsoft\ssd固态硬盘安装
Windows\Storage")
Set objDisk = Wmi.Execquery ("SELECT * FROM MSFT_PhysicalDisk") for Each B in objDisk  if B.MediaType=4  then  Selectdisk=B.DeviceId  end if
next (2) SelectOsdisk (index )函数通过wmi 调用先获取选定硬盘的分区信息,再通过此分区信息获取其逻辑分区信息,即获得Osdisk 的值。
i=0
Ldisk=index&",Partition #0"
Set Wmi = GetObject ("Winmgmts :\\.\root\cimv2")
Set objDisk = Wmi.Execquery ("SELECT * FROM Win32_DiskPartition where diskindex="&index )
for Each B in objDisk pe="GPT :Basic Data"  or  B.type="Installable File System" then
Ldisk=index&",Partition #"&i exit for end if i=i+1next
Set objDisk=Wmi.Execquery ("SELECT * FROM Win32_LogicalDiskToPartition")
For Each B In objDisk If mid (B.Antecedent ,instr (1,B.Antecedent ,"DeviceID",1)+16,15)=Ldisk  Then
SelectOsdisk=mid (B.Dependent ,instr (1,B.Dependent ,"DeviceID",1)+10,2)
end if Next
4    相关配置注意点
UserExit 脚本保存位于mdt 根下Script 目录vbs 文件中,这里命名为ZTIselectdisk.vbs ,其在Customsettings.ini 中引用如下
UserExit=ZTIselectdisk.vbs
OSDDiskIndex=#Selectdisk ()#
Osdisk=#SelectOsdisk (%OSDDiskIndex%)#
由于Mdt 生成的PE 环境默认不包含存储设备的类,因此,在生成PE 时必须在相应平台Features 选项卡下勾选Storage Management Cmdlets 。
5    结束语
本文首先分析了计算机多硬盘条件下操作系统部署(转下页)
多硬盘计算机MDT 部署中SSD 硬盘自动识别
何宏伟
(国网襄阳市襄州区供电公司,襄阳  441100)
摘要:针对多硬盘计算机在安装操作系统时产生的目标位置紊乱问题,探索出一种识别技术。该技术采用将WDS 与MDT 结合的手段,部署中SSD 硬盘自动识别,目标分区自动设置,构建出一套完整的计算机系统部署的解决方案。本套解决方案的识别思想不仅满足NVMe 及SSD,也对其他硬盘借口的Windows 服务器部署具有同样的参考意义。
关键词:windows 部署;MDT ;WDS ;SSD ;系统运维doi :10.3969/J.ISSN.1672-7274.2019.11.118中图分类号:TP333    文献标示码:A    文章编码:1672-7274(2019)11-0144-02
作者简介:
何宏伟,男,土家族,1970年生,湖北咸丰人,工程师,学士,研究方向为计算机与网络运维。