Scripting 自动更改(可能)多个DNS服务器

Scripting 自动更改(可能)多个DNS服务器,scripting,vbscript,dns,Scripting,Vbscript,Dns,我有一个脚本,它利用VBScript来识别它运行的机器的DNS。我有它提醒我,如果我正在寻找的DNS正在使用。我的希望是更进一步,如果找到指定的DNS,将特定的DNS更改为另一个DNS。我发现了一些脚本,这些脚本似乎是基本的想法,但我不认为它们会取代已确定的脚本,只是列表顶部的脚本 以下是我的VBScript,用于标识指定的DNS: 'Bind to Shell Set objShell = WScript.CreateObject("WScript.Shell") 'Read Servers

我有一个脚本,它利用VBScript来识别它运行的机器的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

如果我能澄清任何事情,请告诉我!提前谢谢

您可以使用
SetDNSServerSearchOrder
方法设置DNS服务器(参见示例)。但是,该方法需要一个包含所有要使用的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

您可以使用
SetDNSServerSearchOrder
方法设置DNS服务器(参见示例)。但是,该方法需要一个包含所有要使用的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