我有一个脚本,它利用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,而不是我已识别的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
如果我能澄清任何事情,请告诉我!提前谢谢!
答案 0 :(得分: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