当前位置: 首页 > 图文教程 > 脚本技术 > VBScript > 利用vbs自动修改ip的代码

VBScript
一个最简单的vbs类实例代码
实用vbs提醒小程序
使用vbs下载文件的代码加强版
vbs病毒制作之一复制自身的vbs脚本
用vbs实现的exe2swf工具脚本代码
vbs更改3389远程桌面端口的脚本
用vbs实现的强制杀进程的脚本
用VBS脚本实现更换Windows Xp序列号的代码
vbs实现右键菜单中添加CMD HERE
用VBS脚本删除指定以外的文件或文件夹
用VBS记录客户机操作的代码
用vbs删除某些类型文件和磁盘空间报告的脚本
两个批量挂马vbs脚本代码
关于vbs WebBrowser导航问题
LCL.VBS 病毒源代码
用vbs实现向任何电子邮件发送邮件
用VBS检测Guest状态的脚本
用vbs实现的输入助手附使用方法
vbs base64 解密脚本代码
用vbs实现修改dns的网关脚本

VBScript 中的 利用vbs自动修改ip的代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 72 ::
收藏到网摘: n/a

单位机房的系统需要重新安装,一共近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
"