利用vbs自动修改ip的代码

时间:2021-05-22

单位机房的系统需要重新安装,一共近300台设备,使用ghost网络克隆后,客户机重新设置ip是个麻烦的事情。我们使用的教学管理软件要求客户机必须有固定ip,单位5个机房如下(DNS:61.134.1.4,掩码为:255.255.255.0):

机房

起始ip

ip终止ip

网关

机器名

工作组

1号192.168.1.1100254No_100~No_160S012号192.168.1.101200254No_200~No_260S023号192.168.3.180254No_300~No_360S034号192.168.3.81160254No_400~No_460S045号192.168.3.161240254No_500~No_560S05
以下为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:\DocumentsandSettings\Administrator\「开始」菜单\程序\启动\fxp.lnk")then
setf1=fso.getfile("C:\DocumentsandSettings\Administrator\「开始」菜单\程序\启动\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&"\root\cimv2")
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&"\root\cimv2")
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_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))'工作组
endsub

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章