2014-09-10 17 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