许多管理员在管理域的时候都会遇到修改hosts文件的实际需求,但是一个一个去客户端修改实在是又麻烦又很累的没效率的事情,通过一番查找与修改,发现可以通过vbs脚本在域中分发后进行hosts内记录的添加或修改。具体代码见下
添加hosts记录的vbs,将以下代码复制到记事本,文件后缀保存为vbs即可
Dim fso, objFile, rs,ws,fileString,i
Set fso = CreateObject("Scripting.
FileSystemObject")
Set objFile = fso.GetFile("C:\WINDOWS\system32\drivers\etc\hosts")
Set rs = objFile.OpenAsTextStream(1,-2)
Set ws = objFile.OpenAsTextStream(8,-2)
fileString = rs.ReadAll()
subhost = "202.96.209.5" (设置第一个dns ip)
i = InStr(fileString,subhost)
if i =0 Then
ws.writeLine("#DNS") (此处为解释,不需要复制:在hosts里做一个#解释)
ws.writeLine("202.96.209.6 DNS") (此处为解释,不需要复制:要添加的dns,根据实际需要修改,需要几个设置几行)
ws.writeLine("203.208.39.104 lh1.ggpht.com")
ws.writeLine("203.208.39.104 lh2.ggpht.com")
ws.writeLine("203.208.39.104 lh3.ggpht.com")
ws.writeLine("203.208.39.104 lh4.ggpht.com")
ws.writeLine("203.208.39.104 lh5.ggpht.com")
ws.writeLine("203.208.39.104 lh6.ggpht.com")
else
end if
rs.close()
ws.close()
Set objFile = fso.GetFile("C:\WINDOWS\system32\drivers\etc\hosts")
Set rs = objFile.OpenAsTextStream(1,-2)
Set ws = objFile.OpenAsTextStream(8,-2)
fileString = rs.ReadAll()
subhost = "202.96.209.5" (设置第一个dns ip)
i = InStr(fileString,subhost)
if i =0 Then
ws.writeLine("#DNS") (此处为解释,不需要复制:在hosts里做一个#解释)
ws.writeLine("202.96.209.6 DNS") (此处为解释,不需要复制:要添加的dns,根据实际需要修改,需要几个设置几行)
ws.writeLine("203.208.39.104 lh1.ggpht.com")
ws.writeLine("203.208.39.104 lh2.ggpht.com")
ws.writeLine("203.208.39.104 lh3.ggpht.com")
ws.writeLine("203.208.39.104 lh4.ggpht.com")
ws.writeLine("203.208.39.104 lh5.ggpht.com")
ws.writeLine("203.208.39.104 lh6.ggpht.com")
else
end if
rs.close()
ws.close()
删除hosts特定记录的vbs,将以下代码复制到记事本,文件后缀保存为vbs即可
Sub DeleteFromHosts(lpKeywords)
Const HostsPath="C:\Windows\
System32\Drivers\etc\Hosts"
Dim fso
Set fso=CreateObject("Scripting.FileSystemObject")
tmp=fso.OpenTextFile(HostsPath,1).ReadAll
For Each oStr In Split(tmp,vbNewLine)
If oStr<>"" And InStr(oStr,lpKeywords)=0 Then NewHosts=NewHosts & oStr & vbNewLine
Next
fso.CreateTextFile(HostsPath,True).Write NewHosts
Set fso=Nothing
End Sub
DeleteFromHosts "DNS" (此处为解释,不需要复制:只要将双引号内的内容修改要删除的hosts内对应行的name就可以,"203.208.39.104 lh1.ggpht.com",要删除这行就把 lh1.ggpht.com添上即可)
DeleteFromHosts " lh1.ggpht.com"
DeleteFromHosts " lh2.ggpht.com"
DeleteFromHosts " lh3.ggpht.com"
MsgBox "Hosts Fixed!"
Dim fso
Set fso=CreateObject("Scripting.FileSystemObject")
tmp=fso.OpenTextFile(HostsPath,1).ReadAll
For Each oStr In Split(tmp,vbNewLine)
If oStr<>"" And InStr(oStr,lpKeywords)=0 Then NewHosts=NewHosts & oStr & vbNewLine
Next
fso.CreateTextFile(HostsPath,True).Write NewHosts
Set fso=Nothing
End Sub
DeleteFromHosts "DNS" (此处为解释,不需要复制:只要将双引号内的内容修改要删除的hosts内对应行的name就可以,"203.208.39.104 lh1.ggpht.com",要删除这行就把 lh1.ggpht.com添上即可)
DeleteFromHosts " lh1.ggpht.com"
DeleteFromHosts " lh2.ggpht.com"
DeleteFromHosts " lh3.ggpht.com"
MsgBox "Hosts Fixed!"
做完之后,只需要在服务器中设置为一个开机脚本分发到域中即可。
转载于:https://blog.51cto.com/philipslu/624676