公司使用微軟的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