公司使用微软的MDT来部署系统,默认MDT在每次部署系统时会自动生成一个随机名字,因为公司是域环境并有一套资产管理系统记录序列号,计算机名,型号,资产号及资产Owner信息,每次手动去查询很不方便,想到一个方法来通过脚本自动识别计算机名
大致的构想如下
通过资产系统的SQL数据库定期生成CSV文件并保存在MDT路径
通过VBS读取CSV文件,通过WMI来查询所部署机器的序列号
通过VBS来比对本机序列号,查询CSV库,返回对应的计算机名并赋值
有了思路就开始实施
MDT系统时通过DeployWiz_ComputerName.vbs这个文件来处理计算机名的,对该文件做如下更改即可
z:\Tools-Scripts\assets.csv为CSV文件所在路径,Z:为MDT服务器端目录的网络挂在盘符。
Option Explicit
dim SerialNum,os_pc_name,objWMIService,colItems,objItem
Dim fso, radfile, MyFile, SearchString, MyPos,tempdata,fileobj ‘, username, SearchChar
os_pc_name=""
Set objWMIService = GetObject("winmgmts://./root/cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS", , 48)
For Each objItem In colItems
SerialNum = objItem.SerialNumber
Next
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists("z:\Tools-Scripts\assets.csv")) Then
radfile="z:\Tools-Scripts\assets.csv"
end if
If (fso.FileExists("z:\mdt\Tools-Scripts\assets.csv")) Then
radfile="z:\mdt\Tools-Scripts\assets.csv"
end if
‘ Set MyFile= fso.OpenTextFile(radfile, 1 , TRUE)
If (fso.FileExists(radFile)) Then
Set fileObj = fso.GetFile(radfile)
Set MyFile= fileobj.OpenAsTextStream(1,-2)
Do While MyFile.AtEndOfLine <> True
SearchString=MyFile.ReadLine
MyPos = Instr(SearchString, SerialNum)
if MyPos > 0 then
tempdata=split(SearchString,",")
os_pc_name=trim(tempdata(0))
oEnvironment.Item("OSDComputerName") = os_pc_name ‘ added to set ComputerName *******************
end if
loop
MyFile.Close
end if
本文出自 “笑傲风云” 博客,谢绝转载!
原文地址:http://sky2133.blog.51cto.com/1517395/1671082