2013-06-27 64 views
1

我有一個腳本,它利用VBScript來識別它運行的機器的DNS。如果我正在使用的DNS正在使用,我會提醒我。我希望更進一步,如果找到了指定的DNS,則將該特定的DNS更改爲另一個DNS。我發現了一些似乎是基本想法的腳本,但我認爲它們不會替換已識別的腳本,只是列表頂部的腳本。自動更改(可能)多個DNS服務器

這裏是我的VBScript標識指定的DNS:

'Bind to Shell 
Set objShell = WScript.CreateObject("WScript.Shell") 

'Read Servers NetbiosName 
'strComputer = objShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName\ComputerName") 

strComputer = "." 
wscript.echo strComputer 

Set objWMIService = GetObject("winmgmts:" _ 
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set colNicConfigs = objWMIService.ExecQuery _ 
("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True") 

For Each objNicConfig In colNicConfigs 
    If Not IsNull(objNicConfig.DNSServerSearchOrder) Then 
     For Each strDNSServer In objNicConfig.DNSServerSearchOrder 
      if strDNSServer = "8.8.8.8" Then 
       wscript.echo "Works!" 
      End if 
      wscript.echo strDNSServer 
     Next 
    End If 
Next 

爲了澄清,我需要幫助是在腳本打印出「作品」的一部分。我特別希望將該DNS更改爲另一個指定的DNS。

下面是一些代碼,我還發現,聲稱改變DNS,但我害怕,如果我插入它有它只需將更改DNS在列表的頂部,而不是DNS我已經確定:

Set objShell = WScript.CreateObject("Wscript.Shell") 
objShell.Run "netsh interface ip set address name=""Local Area Connection"" static " & strIPAddress & " " & strSubnetMask & " " & strGateway & " " & intGatewayMetric, 0, True 

讓我知道我是否可以澄清任何事情!提前致謝!

回答

1

您可以使用SetDNSServerSearchOrder方法設置DNS服務器(例如,參見here)。但是,該方法需要一個包含所有要使用的DNS服務器的陣列,因此您需要將當前的DNS服務器讀入陣列,修改要更改的地址,然後使用修改的陣列調用SetDNSServerSearchOrder

If Not IsNull(objNicConfig.DNSServerSearchOrder) Then 
    dns = objNicConfig.DNSServerSearchOrder 
    For i = 0 To UBound(dns) 
    if dns(i) = "8.8.8.8" Then dns(i) = "4.4.4.4" 
    Next 
    objNicConfig.SetDNSServerSearchOrder(dns) 
End If 
相關問題