2014-09-10 89 views
0

我正在寻找一种方式来有这个.vbs文件,添加一个连接特定的DNS后缀的以太网适配器的代码构成的过去LAN.vbs的脚本来改变连接特定的DNS后缀

的响亮的名字一个小的shell脚本:

  1. 更改主DNS后缀
  2. 刷新该DNS
  3. 检查IP信息,以确保一切都举行
  4. 更改启动ŧ YPE或服务
  5. 开始说服务
  6. 的Ping一个已知的服务器,以确保网络连通

似乎无法找到任何代码,这就是可行做出的第一步工作。目前我有:

'add dns 

Const HKEY_LOCAL_MACHINE = &H80000002 
strComputer = "." 
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
strComputer & "\root\default:StdRegProv") 

strKeyPath = "SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" 
oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath 
strValueName = "AppendToMultiLabelName" 
'Enabled 
strValue = "mysuffix.com" 
oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue 


'flush dns 

set shell = createobject("wscript.shell") 
shell.run("ipconfig /flushdns") 
Wscript.echo "DNS Flushed." 


'check DNS 

Set objShell = CreateObject("WScript.Shell") 
Set objScriptExec = objShell.Exec("ipconfig /all") 
strIpConfig = objScriptExec.StdOut.ReadAll 
WScript.Echo strIpConfig 


'start McAfee 

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 

Set colServiceList = objWMIService.ExecQuery _ 
    ("Select * from Win32_Service where Name = 'enterceptAgent'") 

For Each objService in colServiceList 
    If objService.State = "Stopped" Then 
     objService.StartService() 
     Wscript.Sleep 5000 
     Wscript.Echo "McAfee Started" 
    Else 
     Wscript.Echo "McAfee already running" 
     Wscript.Sleep 5000 
    End If 
    errReturnCode = objService.ChangeStartMode("automatic") 
Next 

'network test 

set shell = createobject("wscript.shell") 
shell.run("ping pmo2 -t") 

干杯

+0

恕我直言,至少有两个注册表_Primary DNS Suffix_设置的展示位置;我不确定它的偏好(对于[SuperUser](http://superuser.com/)而言):key [HKLM \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Paramaters',值'Domain'和'SearchList ';和'HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows NT \ DNSClient'键值'NV PrimaryDnsSuffix'。任何注册表操作可能需要重新启动才能应用... – JosefZ 2014-09-12 08:29:10

+0

感谢JosefZ,我发现要操作的密钥位于HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ Tcpip \ Parameters \ Adapters中,但要求选择正确的GUID,这意味着它更容易手动而不是脚本来做,但我会考虑你的建议 – NXSmiggy 2014-09-12 12:28:41

回答

0

试试这个(配置到正确的GUID,见objNetCard.SettingID属性):

option explicit 
'On Error Resume Next 
On Error GoTo 0 
Dim strResult: strResult = Wscript.ScriptName 

Dim strComputer, objWMIService, colNetCards, objNetCard 
strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 

Set colNetCards = objWMIService.ExecQuery _ 
    ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True") 

For Each objNetCard in colNetCards 
    strResult = strResult _ 
    & vbNewLine & objNetCard.Caption & vbTab & "'" & objNetCard.DNSDomain & "'" & vbTab & CBool(IsEmpty(objNetCard.DNSDomain)) & vbTab & CBool(IsNull(objNetCard.DNSDomain)) 
    strResult = strResult _ 
    & vbNewLine & objNetCard.SetDNSDomain("mysuffix.com") 
'' strResult = strResult & vbNewLine & objNetCard.SetDNSSuffixSearchOrder("mysuffix.com") 

Next 
'strResult = strResult & vbNewLine 

Wscript.Echo strResult 

SetDNSDomain method return codes