單位機房的系統需要重新安裝,一共近300臺設備,使用ghost網絡克隆后,客戶機重新設置ip是個麻煩的事情。我們使用的教學管理軟件要求客戶機必須有固定ip,單位5個機房如下(DNS:61.134.1.4,掩碼為:255.255.255.0):
機房  | 起始ip  | ip終止ip   | 網關   | 機器名   | 工作組   | 
|  1號 |  192.168.1.1 | 100  |  254  |  No_100~No_160 |  S01 | 
|  2號 |  192.168.1.101 |  200 |  254  |  No_200~No_260 |  S02 | 
|  3號 |  192.168.3.1 |  80 |  254 |  No_300~No_360 |  S03 | 
|  4號 |  192.168.3.81 |  160 |  254 |  No_400~No_460 |  S04 | 
|  5號 |  192.168.3.161 |  240 |  254  |  No_500~No_560 |  S05 | 
以下為vbs源碼:
1.xp系統(測試通過,用戶為Administrator,文件為E:/fxp.vbs,啟動組建立快捷方式fxp.lnk以便開機后自動運行一次)
復制代碼 代碼如下:
'/////主程序  
dim msginf,machname'定義變量:對話框,機器名  
msginf=msgbox("該程序只能執行1次,請在XP系統硬件安裝完畢后執行!" &chr(13) & "是否繼續?",65,"修改機器網絡配置") '信息提示  
if msginf=1 then ' 如果按確定,則  
machname=inputon() ' 用函數inputon()分析  
if machname<>"quit" then ' 如果返回值不等于"quit",則  
wmitoip(machname) ' 運行函數wmitoip()設置機器信息  
mreboot()'重啟機器  
end if  
end if  
'///重啟機器  
sub mreboot()  
dim fso,f1,f2  
Set fso = CreateObject("Scripting.FileSystemObject")  
'刪除啟動組  
if fso.fileexists("C:/Documents and Settings/Administrator/「開始」菜單/程序/啟動/fxp.lnk") then  
set f1=fso.getfile("C:/Documents and Settings/Administrator/「開始」菜單/程序/啟動/fxp.lnk")  
f1.delete  
end if  
'刪除vbs文件  
if fso.fileexists("e:/fxp.vbs") then  
set f2=fso.getfile("e:/fxp.vbs")  
f2.delete  
end if  
Set WshShell = Wscript.CreateObject("Wscript.Shell")  
'WshShell.Run ("shutdown.exe -r -t 5") ' 重啟  
end sub  
'///生成計算機名  
function inputon() ' 函數inputon()  
dim t ' 變量  
while true ' 循環直到退出函數  
t=inputbox("按一下規則輸入:" & chr(13) & chr(13) & "第1位代表機房號" & chr(13) & "第2、3位代表機器號" & chr(13) & "教師機用00代表" & chr(13) & "如:123代表1號機房23號機" & chr(13) & "請確保輸入正確!!","請輸入3位機器標識!","") ' 輸入機算機名,默認值為空  
if t="" then ' 如果t等于空(按了取消鍵),則  
inputon="quit" ' 返回值為"quit"  
exit function ' 退出程序  
end if  
if len(t)=3 then ' 計算機號的長度為3位  
if Cint(t)>=100 and Cint(t)<580 then ' 驗證  
inputon=t ' 返回需要的計算機名  
exit function  
end if  
end if  
wend  
end function  
'///修改機器ip、掩碼、網關、工作組、機器名  
sub wmitoip(t)  
strComputer="."  
strmask="255.255.255.0"  
Dim lt,rt' 變量  
dim ipv,gateway,lan 'ip,網關,工作組  
lt=cint(left(t,1))'機號左1位數字值  
rt=cint(right(t,2)) ' 機號右兩位數字值  
if lt=1 or lt=2 then'判斷網關  
gateway="192.168.1.254"  
else  
gateway="192.168.3.254"  
end if  
if lt=1 then '1號機房  
lan="S01"  
ipv="192.168.1."  
if rt=0 then '教師機  
ipv=ipv+"100"  
else'學生機  
ipv=ipv+Cstr(rt)  
end if  
end if  
if lt=2 then '2號機房  
lan="S02"  
ipv="192.168.1."  
if rt=0 then '教師機  
ipv=ipv+"200"  
else'學生機  
rt=rt+100  
ipv=ipv+Cstr(rt)  
end if  
end if  
if lt=3 then '3號機房  
lan="S03"  
ipv="192.168.3."  
if rt=0 then '教師機  
ipv=ipv+"80"  
else'學生機  
ipv=ipv+Cstr(rt)  
end if  
end if  
if lt=4 then '4號機房  
lan="S04"  
ipv="192.168.3."  
if rt=0 then '教師機  
ipv=ipv+"160"  
else'學生機  
rt=rt+80  
ipv=ipv+Cstr(rt)  
end if  
end if  
if lt=5 then '5號機房  
lan="S05"  
ipv="192.168.3."  
if rt=0 then '教師機  
ipv=ipv+"240"  
else'學生機  
rt=rt+160  
ipv=ipv+Cstr(rt)  
end if  
end if  
Set objWMIService=GetObject("winmgmts://" & strComputer & "/root/cimv2")  
Set colNetAdapters=objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")  
strIPAddress=Array(ipv)  
strSubnetMask=Array(strmask)  
strGateway = Array(gateway) '修改網關  
'strGatewayMetric = Array(1) '躍點數  
strDNS=Array("61.134.1.4")  
For Each objNetAdapter in colNetAdapters   
errEnable=objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)'ip,掩碼  
errGateways = objNetAdapter.SetGateways(strGateway) '網關  
errDns=objNetAdapter.SetDNSServerSearchOrder(strDNS)'dns  
Next  
Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!//" & strComputer & "/root/cimv2")  
Set colComputers = objWMIService.ExecQuery _  
    ("Select * from Win32_ComputerSystem")  
For Each objComputer in colComputers  
    err = ObjComputer.Rename("No_" & t)'機器名  
    ReturnValue = objComputer.JoinDomainOrWorkGroup("S0" & left(t,1))'工作組    
Next  
end sub 
2.98系統 
98系統可以生成ip.reg注冊表文件,導入后就可以了,源碼如下(主體思路,這次沒有98系統,所以未完成,可參考xp系統的改進): 
復制代碼 代碼如下:
'/////主程序  
dim msginf,machname'定義變量:對話框,機器名  
msginf=msgbox("生成注冊表文件,是否繼續?",65,"getreg") '信息提示  
if msginf=1 then ' 如果按確定,則  
machname=inputon() ' 用函數inputon()分析  
if machname<>"quit" then ' 如果返回值不等于"quit",則  
setreg(machname) ' 運行函數setreg()生成注冊表ip.reg  
end if  
end if  
'///生成計算機名  
function inputon() ' 函數inputon()  
dim t ' 變量  
while true ' 循環直到退出函數  
t=inputbox("按一下規則輸入:" & chr(13) & chr(13) & "第1位代表機房號" & chr(13) & "第2、3位代表機器號" & chr(13) & "教師機用00代表" & chr(13) & "如:123代表1號機房23號機" & chr(13) & "請確保輸入正確!!","請輸入3位機器標識!","") ' 輸入機算機名,默認值為空  
if t="" then ' 如果t等于空(按了取消鍵),則  
inputon="quit" ' 返回值為"quit"  
exit function ' 退出程序  
end if  
if len(t)=3 then ' 計算機號的長度為3位  
if Cint(t)>=100 and Cint(t)<580 then ' 驗證  
inputon=t ' 返回需要的計算機名  
exit function  
end if  
end if  
wend  
end function  
'///生成注冊文件  
sub setreg(t) ' 生成注冊表,t為機器號  
Dim fso, f1,f2,lt,rt' 變量  
dim ipv,gateway,lan 'ip,網關,工作組  
lt=cint(left(t,1))'機號左1位數字值  
rt=cint(right(t,2)) ' 機號右兩位數字值  
if lt=1 or lt=2 then'判斷網關  
gateway="192.168.1.254"  
else  
gateway="192.168.3.254"  
end if  
if lt=1 then '1號機房  
lan="S01"  
ipv="192.168.1."  
if rt=0 then '教師機  
ipv=ipv+"100"  
else'學生機  
ipv=ipv+Cstr(rt)  
end if  
end if  
if lt=2 then '2號機房  
lan="S02"  
ipv="192.168.1."  
if rt=0 then '教師機  
ipv=ipv+"200"  
else'學生機  
rt=rt+100  
ipv=ipv+Cstr(rt)  
end if  
end if  
if lt=3 then '3號機房  
lan="S03"  
ipv="192.168.3."  
if rt=0 then '教師機  
ipv=ipv+"80"  
else'學生機  
ipv=ipv+Cstr(rt)  
end if  
end if  
if lt=4 then '4號機房  
lan="S04"  
ipv="192.168.3."  
if rt=0 then '教師機  
ipv=ipv+"160"  
else'學生機  
rt=rt+80  
ipv=ipv+Cstr(rt)  
end if  
end if  
if lt=5 then '5號機房  
lan="S05"  
ipv="192.168.3."  
if rt=0 then '教師機  
ipv=ipv+"240"  
else'學生機  
rt=rt+160  
ipv=ipv+Cstr(rt)  
end if  
end if  
Set fso = CreateObject("Scripting.FileSystemObject")  
if fso.fileexists("e:/ip.reg") then  
set f2=fso.getfile("e:/ip.reg")  
f2.delete  
end if '如果存在ip.reg,先刪了  
set f1 = fso.CreateTextFile("e:/ip.reg", True) ' 建立文件ip.cfg  
'f1.WriteLine("REGEDIT4") ' 以下為生成注冊表  
f1.WriteLine("Windows Registry Editor Version 5.00")  
f1.WriteBlankLines(1)  
f1.WriteLine("[HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/ComputerName/ComputerName]")  
f1.WriteLine(chr(34) & "ComputerName" & chr(34) & "=" & chr(34) & t & chr(34)) ' 計算機名  
f1.WriteLine("[HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Class/NetTrans/0000]")  
f1.WriteLine(chr(34) & "IPAddress" & chr(34) & "=" & chr(34) & ipv & chr(34)) ' IP  
f1.WriteLine("[HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Class/NetTrans/0000]")  
f1.WriteLine(chr(34) & "DefaultGateway" & chr(34) & "=" & chr(34) & gateway & chr(34)) ' 網關  
f1.WriteLine("[HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Class/NetTrans/0000]")  
f1.WriteLine(chr(34) & "IPMask" & chr(34) & "=" & chr(34) & "255.255.255.0" & chr(34)) ' 子網掩碼  
f1.WriteLine("[HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/VxD/VNETSUP]")  
f1.WriteLine(chr(34) & "Comment" & chr(34) & "=" & chr(34) & t & chr(34)) ' 計算機說明  
f1.WriteLine("[HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/VxD/VNETSUP]")  
f1.WriteLine(chr(34) & "ComputerName" & chr(34) & "=" & chr(34) & t & chr(34)) ' 計算機名  
f1.WriteLine("[HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/VxD/VNETSUP]")  
f1.Writeline(chr(34) & "Workgroup" & chr(34) & "=" & chr(34) & lan & chr(34)) ' 工作組  
end sub