看到有人对VBS感兴趣,前一段时间研究了一阵。由于经常在公司装系统,必须做的三件事:1、更改IP地址(包括IP、子网掩码、网关、DNS);2、更改计算机名;3、加入域。因此查了微软的资料,写了三个脚本,现拿出来,与大家分享,欢迎批评指正。1、更改IP地址文件名:更改IP地址.vbs代码:SetobjShell=CreateObject("Wscript.Shell")IP=InputBox("输入新的IP地址","IP地址")NM="255.255.255.0"'子网掩码GW=left(IP,8)"1"'网关根据自己的实际情况录入,见下面的说明文字MDNS="10.10.10.10"'首选DNSSDNS="10.10.10.30"'备用DNSmsgboxChangeIP(IP,NM,GW,MDNS,SDNS)FunctionChangeIP(IP,NM,GW,MDNS,SDNS)DimstrComputer,objWMIService,colNetAdapters,strIPAddress,strSubnetMaskDimstrGateway,strGatewaymetric,strDNS,objNetAdapter,errEnable,errGateways,errDNSstrComputer="."SetobjWMIService=GetObject("winmgmts:\\"strComputer"\root\cimv2")SetcolNetAdapters=objWMIService.ExecQuery("Select*fromWin32_NetworkAdapterConfigurationwhereIPEnabled=TRUE")strIPAddress=Array(IP)strSubnetMask=Array(NM)strGateway=Array(GW)strDNS=Array(MDNS,SDNS)strGatewaymetric=Array(1)ForEachobjNetAdapterIncolNetAdapterserrEnable=objNetAdapter.EnableStatic(strIPAddress,strSubnetMask)errGateways=objNetAdapter.SetGateways(strGateway,strGatewaymetric)errDNS=objNetAdapter.SetDNSServerSearchOrder(strDNS)IferrEnable=0AnderrGateways=0AnderrDNS=0ThenChangeIP="设置成功"ElseIferrEnable=0ThenChangeIP="IP地址和子网掩码设置成功,"ElseChangeIP="IP地址或子网掩码设置失败,"EndIfIferrGateways=0ThenChangeIP=ChangeIP"默认网关设置成功,"ElseChangeIP=ChangeIP"默认网关设置失败,"EndIfIferrDNS=0ThenChangeIP=ChangeIP"DNS设置成功"ElseChangeIP=ChangeIP"DNS设置失败"EndIfEndIfNextEndFunction说明一下,由于我公司的IP地址为10.10.x.x,其中第三段不超过二位数,并且,网关最后一段都为1,因此,我在取网关时用了GW=left(IP,8)"1"'网关这么一句,这一句可以根据自己的情况更改。我本来想通过IP地址,取前面三段加上1组成网关,可是我没有找到相应的函数和方法来实现,希望高手能给补充一下。我的DNS都是相同的,因此直接录入了。使用方法:把上面的代码复制,并粘贴至记事本中,存为更改IP地址.vbs。双击就可以执行。2、更改计算机名文件名:更改计算机名.vbs代码:DimrevalSetobjnet=CreateObject("WScriptwork")SetR=CreateObject("WScript.Shell")reval=InputBox("当前的计算机名是:"objnetputerName,"输入新的计算机名")OnErrorResumeNextstrComputer="."SetobjWMIService=GetObject("winmgmts:"_"{impersonationLevel=impersonate}!\\"_strComputer"\root\cimv2")SetcolComputers=objWMIService.ExecQuery_("Select*fromWin32_ComputerSystem")ForEachobjComputerincolComputerserrReturn=ObjComputer.Rename(reval)Ifreval<>""Thenreturn=MsgBox("你确定要重起计算机吗?",vbokcancel+vbexclamation,"注意!")Ifreturn=vbokThenR.run("Shutdown.exe-r-t0")EndifEndIfNext这个比较简单,没有什么好说的。3、加入域文件名:加入域.vbs代码:'*把你的计算机加入域*ConstJOIN_DOMAIN=1ConstACCT_CREATE=2ConstACCT_DELETE=4ConstWIN9X_UPGRADE=16ConstDOMAIN_JOIN_IF_JOINED=32ConstJOIN_UNSECURE=64ConstMACHINE_PASSWORD_PASSED=128ConstDEFERRED_SPN_SET=256ConstINSTALL_INVOCATION=262144'你的域名称strDomain="domain"'这里不要按照我写的录入,录入你的域名。'有domainadmins组权限的用户及密码strPassword="password"'这里不要按照我写的录入,应根据你自己的情况。录入具有domainadmins组权限用户的密码strUser="user"'这里不要按照我写的录入,应根据你自己的情况。录入具有domainadmins组权限用户名SetobjNetwork=CreateObject("WScriptwork")strComputer=objNetworkputerNameSetobjComputer=GetObject("winmgmts:{impersonationLevel=Impersonate}!\\"_strComputer"\root\cimv2:Win32_ComputerSystem.Name='"_strComputer"'")ReturnValue=objComputer.JoinDomainOrWorkGroup(strDomain,_strPassword,_strDomain"\"strUser,_NULL,_JOIN_DOMAIN+ACCT_CREATE)'加入域后,必须重起计算机SetobjShell=CreateObject("Wscript.Shell")return=MsgBox("加入域后,必须重起计算机才能生效!",vbokcancel+vbexclamation,"注意!")Ifreturn=vbokThenobjShell.run("Shutdown.exe-r-t0")Endif这个脚本要注意红字的部分,使用方法同第一个脚本。这三个脚本是为本地计算机而写的,其实这些脚本也能更改远程计算机的配置,只是稍加修改就可了。修改这一句就能实现:strComputer="."改为strComputer="远程计算机名"。前提当然是远程计算机网络可通。