0

修改机器名和IP地址的脚本(VBS)

Posted by 晴云孤魂 on 2011 年 10 月 13 日 in windows Script Design |

把两个脚本合并了一下,做好的VBS文件放在日志最下方给大家下载

——————————————————————————–

上周维护机房,传好系统后又是老惯例:手动改机器名和IP地址,改好后喊累……虽然说这一步操作每次都必不可少(尤其是喊累这一步),但是有没有方法能减少一点工作量呢?

为了成全自己偷懒的心愿,在网上小研究了一下,东抄西抄拼出了下面两个脚本,有需要的同学可以直接把代码复制下来存成.vbs文件即可。

PS:还原卡有自动修改功能的同学现在可以无视飘过了~

1、 免重启修改机器名

Dim Prefix

Prefix=”PC” ‘机器名前缀

Dim Name

Name=Inputbox (“请输入本机计算机名:”+chr(10)&chr(13)+””,”计算机名修改器”)

Set Sh = CreateObject(“WScript.Shell”)

Sh.RegWrite “HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName”,Prefix&Name,”REG_SZ”

Sh.RegWrite “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\NV Hostname”,Prefix&Name,”REG_SZ”

Sh.RegWrite “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Hostname”,Prefix&Name,”REG_SZ”

Set sh = Nothing

Set oShell = Nothing

strComputer = “.”

Set objWMIService = GetObject(“winmgmts:” _

& “{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2”)

Set colComputers = objWMIService.ExecQuery _

(“Select * from Win32_ComputerSystem”)

For Each objComputer in colComputers

‘ObjComputer.Rename(Prefix&Name)

Next

Set objNetworkSettings = objWMIService.Get(“Win32_NetworkAdapterConfiguration”)

objNetworkSettings.SetIPXVirtualNetworkNumber(Name)

注:机器名前缀(红色部分)可以自己改,不要前缀的话将双引号内的部分删除即可。

2、 IP地址修改

Dim Num

Num=Inputbox (“请输入本机编号:”+chr(10)&chr(13)+”必须是1-244之间的三位’半角’数字!”,”IP修改器”)

Dim Ipnum

Ipnum=Num+100 ‘IP为机器号(ip叠加100,不加就去掉+100)

Dim SubnetMask

SubnetMask=”255.255.255.0″ ‘子网掩码 按需更换

Dim Gateway

Gateway=”192.168.100.” ‘网关前3位 按需更换

Dim gatewayip

gatewayip=”1″ ‘网关最后1位 按需更换

dim Dns1

Dns1=”218.2.135.1″ ‘主DNS 按需更换

dim Dns2

Dns2=”61.147.37.1″ ‘次DNS 按需更换

strComputer = “.”

Set objWMIService = GetObject(“winmgmts:\\” & strComputer & “\root\cimv2”)

Set colNetAdapters = objWMIService.ExecQuery _

(“Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE”)

strIPAddress = Array(Gateway&Ipnum)

strSubnetMask = Array(SubnetMask)

strGateway = Array(gateway&gatewayip)

strGatewayMetric = Array(1)

arrDNSServers = Array(Dns1,Dns2)

For Each objNetAdapter in colNetAdapters

errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)

errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)

errDNS=objNetAdapter.SetDNSServerSearchOrder(arrDNSServers)

Next

Set objNetworkSettings = objWMIService.Get(“Win32_NetworkAdapterConfiguration”)

objNetworkSettings.SetIPXVirtualNetworkNumber(Num)

注:代码中红色部分根据自己需要修改

请大家注意代码中绿色部分,这行代码的意思是选中在WMI对象里“Win32_NetworkAdapterConfiguration”中IPEnabled值为TRUE的项,简单的说就是找到系统当前使用的网卡,就是这项让我吃了大苦。普通情况下,一台电脑中往往只有一块启用的网卡,所以用IPEnabled=TRUE来判断没有问题,但是我机房的学生机上全装了VMware……大家都知道VMware会在系统中生成两个虚拟网卡,所以系统中一共有了3块启用的网卡,当我执行这个脚本后,3块网卡的IP地址都被改了,结果所有机器IP又要重设……内牛满面啊~~~

如果你的学生机系统中也有VMware的话,最好在传系统前将物理网卡的地址手动设好,然后把代码中绿色部分改为DHCPEnabled=FALSE

这两个脚本大家可以集成在系统里,然后在桌面上做一个批处理文件调用,例如:

Config.bat

@echo off

C:\windows\system32\hostconfig.vbs

C:\windows\system32\ipconfig.vbs

Del config.bat

使用这两个脚本需要Wscript.shell支持,如果你的系统中已经反注册了Wscript.dll的话则无法使用。

附录:关于WMI(转自百度知道)

  “WMI是Windows 2K/XP管理系统的核心;对于其他的Win32操作系统,WMI是一个有用的插件。WMI以CIMOM为基础,CIMOM即公共信息模型对象管理器(Common Information Model Object Manager),

是一个描述操作系统构成单元的对象数据库,为MMC和脚本程序提供了一个访问操作系统构成单元的公共接口。有了WMI,工具软件和脚本程序访问操作系统的不同部分时不需要使用不同的API;相反,操作系统的不同部分都可以插入WMI,如图一所示(该图来自MSDN),工具软件和WMI可以方便地读写WMI。”

关于WMI的知识网上有不少,有兴趣研究的同学可以看看,提供一个工具给大家:

点击下载WMI Explorer

发表评论

电子邮件地址不会被公开。 必填项已用*标注

使用腾讯微博登陆

Copyright © 2011-2017 晴云孤魂's Blog All rights reserved.
This site is using the Desk Mess Mirrored theme, v2.2.2, from BuyNowShop.com.

普人特福的博客cnzz&51la for wordpress,cnzz for wordpress,51la for wordpress