多硬盘计算机MDT部署中SSD硬盘自动识别

2019-02-13 10:26:21
数字通信世界 2019年11期
关键词:脚本调用固态

(国网襄阳市襄州区供电公司,襄阳 441100)

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,该信息作为变量进行收集和存储,用于整个部署过程的控制,mdt还支持调用外部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:\.RootMicrosoftWindowsStorage")

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:\. ootcimv2")

Set objDisk = Wmi.Execquery("SELECT * FROM Win32_DiskPartition where diskindex="&index)

for Each B in objDisk

if B.type="GPT:Basic Data" or B.type="Installable File System" then

Ldisk=index&",Partition #"&i

exit for

end if

i=i+1

next

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 结束语

本文首先分析了计算机多硬盘条件下操作系统部署存在的问题,对当前的具有SSD多硬盘计算机的系统部署提出了解决方案。本文的固态硬盘识别思想不仅满足NVMe及SSD,也对其他硬盘接口的Windows服务器部署具有同样的参考意义,希望本文的分析能给在Windows系统运维遇到困难的同行提供借鉴和参考。

猜你喜欢
脚本调用固态
酒驾
固态Marx发生器均流技术研究
Sn掺杂石榴石型Li7La3Zr2O12固态电解质的制备
陶瓷学报(2021年1期)2021-04-13 01:33:40
透明陶瓷在固态照明中的应用进展
陶瓷学报(2021年1期)2021-04-13 01:32:54
安奇奇与小cool 龙(第二回)
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
测控技术(2018年5期)2018-12-09 09:04:46
数据库系统shell脚本应用
电子测试(2018年14期)2018-09-26 06:04:24
快乐假期
中学生(2017年19期)2017-09-03 10:39:07
基于系统调用的恶意软件检测技术研究