单位机房的系统需要重新安装,一共近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以便开机后自动运行一次)
复制代码 代码如下:
'/////主程序
dimmsginf,machname'定义变量:对话框,机器名
msginf=msgbox("该程序只能执行1次,请在XP系统硬件安装完毕后执行!"&chr(13)&"是否继续?",65,"修改机器网络配置")'信息提示
ifmsginf=1then'如果按确定,则
machname=inputon()'用函数inputon()分析
ifmachname<>"quit"then'如果返回值不等于"quit",则
wmitoip(machname)'运行函数wmitoip()设置机器信息
mreboot()'重启机器
endif
endif
'///重启机器
submreboot()
dimfso,f1,f2
Setfso=CreateObject("Scripting.FileSystemObject")
'删除启动组
iffso.fileexists("C:DocumentsandSettingsAdministrator「开始」菜单程序启动fxp.lnk")then
setf1=fso.getfile("C:DocumentsandSettingsAdministrator「开始」菜单程序启动fxp.lnk")
f1.delete
endif
'删除vbs文件
iffso.fileexists("e:fxp.vbs")then
setf2=fso.getfile("e:fxp.vbs")
f2.delete
endif
SetWshShell=Wscript.CreateObject("Wscript.Shell")
'WshShell.Run("shutdown.exe-r-t5")'重启
endsub
'///生成计算机名
functioninputon()'函数inputon()
dimt'变量
whiletrue'循环直到退出函数
t=inputbox("按一下规则输入:"&chr(13)&chr(13)&"第1位代表机房号"&chr(13)&"第2、3位代表机器号"&chr(13)&"教师机用00代表"&chr(13)&"如:123代表1号机房23号机"&chr(13)&"请确保输入正确!!","请输入3位机器标识!","")'输入机算机名,默认值为空
ift=""then'如果t等于空(按了取消键),则
inputon="quit"'返回值为"quit"
exitfunction'退出程序
endif
iflen(t)=3then'计算机号的长度为3位
ifCint(t)>=100andCint(t)<580then'验证
inputon=t'返回需要的计算机名
exitfunction
endif
endif
wend
endfunction
'///修改机器ip、掩码、网关、工作组、机器名
subwmitoip(t)
strComputer="."
strmask="255.255.255.0"
Dimlt,rt'变量
dimipv,gateway,lan'ip,网关,工作组
lt=cint(left(t,1))'机号左1位数字值
rt=cint(right(t,2))'机号右两位数字值
iflt=1orlt=2then'判断网关
gateway="192.168.1.254"
else
gateway="192.168.3.254"
endif
iflt=1then'1号机房
lan="S01"
ipv="192.168.1."
ifrt=0then'教师机
ipv=ipv+"100"
else'学生机
ipv=ipv+Cstr(rt)
endif
endif
iflt=2then'2号机房
lan="S02"
ipv="192.168.1."
ifrt=0then'教师机
ipv=ipv+"200"
else'学生机
rt=rt+100
ipv=ipv+Cstr(rt)
endif
endif
iflt=3then'3号机房
lan="S03"
ipv="192.168.3."
ifrt=0then'教师机
ipv=ipv+"80"
else'学生机
ipv=ipv+Cstr(rt)
endif
endif
iflt=4then'4号机房
lan="S04"
ipv="192.168.3."
ifrt=0then'教师机
ipv=ipv+"160"
else'学生机
rt=rt+80
ipv=ipv+Cstr(rt)
endif
endif
iflt=5then'5号机房
lan="S05"
ipv="192.168.3."
ifrt=0then'教师机
ipv=ipv+"240"
else'学生机
rt=rt+160
ipv=ipv+Cstr(rt)
endif
endif
SetobjWMIService=GetObject("winmgmts:"&strComputer&"rootcimv2")
SetcolNetAdapters=objWMIService.ExecQuery("Select*fromWin32_NetworkAdapterConfigurationwhereIPEnabled=TRUE")
strIPAddress=Array(ipv)
strSubnetMask=Array(strmask)
strGateway=Array(gateway)'修改网关
'strGatewayMetric=Array(1)'跃点数
strDNS=Array("61.134.1.4")
ForEachobjNetAdapterincolNetAdapters
errEnable=objNetAdapter.EnableStatic(strIPAddress,strSubnetMask)'ip,掩码
errGateways=objNetAdapter.SetGateways(strGateway)'网关
errDns=objNetAdapter.SetDNSServerSearchOrder(strDNS)'dns
Next
SetobjWMIService=GetObject("winmgmts:"_
&"{impersonationLevel=impersonate}!"&strComputer&"rootcimv2")
SetcolComputers=objWMIService.ExecQuery_
("Select*fromWin32_ComputerSystem")
ForEachobjComputerincolComputers
err=ObjComputer.Rename("No_"&t)'机器名
ReturnValue=objComputer.JoinDomainOrWorkGroup("S0"&left(t,1))'工作组
Next
endsub
2.98系统
98系统可以生成ip.reg注册表文件,导入后就可以了,源码如下(主体思路,这次没有98系统,所以未完成,可参考xp系统的改进):
复制代码 代码如下:
'/////主程序
dimmsginf,machname'定义变量:对话框,机器名
msginf=msgbox("生成注册表文件,是否继续?",65,"getreg")'信息提示
ifmsginf=1then'如果按确定,则
machname=inputon()'用函数inputon()分析
ifmachname<>"quit"then'如果返回值不等于"quit",则
setreg(machname)'运行函数setreg()生成注册表ip.reg
endif
endif
'///生成计算机名
functioninputon()'函数inputon()
dimt'变量
whiletrue'循环直到退出函数
t=inputbox("按一下规则输入:"&chr(13)&chr(13)&"第1位代表机房号"&chr(13)&"第2、3位代表机器号"&chr(13)&"教师机用00代表"&chr(13)&"如:123代表1号机房23号机"&chr(13)&"请确保输入正确!!","请输入3位机器标识!","")'输入机算机名,默认值为空
ift=""then'如果t等于空(按了取消键),则
inputon="quit"'返回值为"quit"
exitfunction'退出程序
endif
iflen(t)=3then'计算机号的长度为3位
ifCint(t)>=100andCint(t)<580then'验证
inputon=t'返回需要的计算机名
exitfunction
endif
endif
wend
endfunction
'///生成注册文件
subsetreg(t)'生成注册表,t为机器号
Dimfso,f1,f2,lt,rt'变量
dimipv,gateway,lan'ip,网关,工作组
lt=cint(left(t,1))'机号左1位数字值
rt=cint(right(t,2))'机号右两位数字值
iflt=1orlt=2then'判断网关
gateway="192.168.1.254"
else
gateway="192.168.3.254"
endif
iflt=1then'1号机房
lan="S01"
ipv="192.168.1."
ifrt=0then'教师机
ipv=ipv+"100"
else'学生机
ipv=ipv+Cstr(rt)
endif
endif
iflt=2then'2号机房
lan="S02"
ipv="192.168.1."
ifrt=0then'教师机
ipv=ipv+"200"
else'学生机
rt=rt+100
ipv=ipv+Cstr(rt)
endif
endif
iflt=3then'3号机房
lan="S03"
ipv="192.168.3."
ifrt=0then'教师机
ipv=ipv+"80"
else'学生机
ipv=ipv+Cstr(rt)
endif
endif
iflt=4then'4号机房
lan="S04"
ipv="192.168.3."
ifrt=0then'教师机
ipv=ipv+"160"
else'学生机
rt=rt+80
ipv=ipv+Cstr(rt)
endif
endif
iflt=5then'5号机房
lan="S05"
ipv="192.168.3."
ifrt=0then'教师机
ipv=ipv+"240"
else'学生机
rt=rt+160
ipv=ipv+Cstr(rt)
endif
endif
Setfso=CreateObject("Scripting.FileSystemObject")
iffso.fileexists("e:ip.reg")then
setf2=fso.getfile("e:ip.reg")
f2.delete
endif'如果存在ip.reg,先删了
setf1=fso.CreateTextFile("e:ip.reg",True)'建立文件ip.cfg
'f1.WriteLine("REGEDIT4")'以下为生成注册表
f1.WriteLine("WindowsRegistryEditorVersion5.00")
f1.WriteBlankLines(1)
f1.WriteLine("[HKEY_LOCAL_MACHINESystemCurrentControlSetControlComputerNameComputerName]")
f1.WriteLine(chr(34)&"ComputerName"&chr(34)&"="&chr(34)&t&chr(34))'计算机名
f1.WriteLine("[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesClassNetTrans000]")
f1.WriteLine(chr(34)&"IPAddress"&chr(34)&"="&chr(34)&ipv&chr(34))'IP
f1.WriteLine("[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesClassNetTrans000]")
f1.WriteLine(chr(34)&"DefaultGateway"&chr(34)&"="&chr(34)&gateway&chr(34))'网关
f1.WriteLine("[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesClassNetTrans000]")
f1.WriteLine(chr(34)&"IPMask"&chr(34)&"="&chr(34)&"255.255.255.0"&chr(34))'子网掩码
f1.WriteLine("[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDVNETSUP]")
f1.WriteLine(chr(34)&"Comment"&chr(34)&"="&chr(34)&t&chr(34))'计算机说明
f1.WriteLine("[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDVNETSUP]")
f1.WriteLine(chr(34)&"ComputerName"&chr(34)&"="&chr(34)&t&chr(34))'计算机名
f1.WriteLine("[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDVNETSUP]")
f1.Writeline(chr(34)&"Workgroup"&chr(34)&"="&chr(34)&lan&chr(34))'工作组
endsub