1

VBScript を使用して、それが実行されているマシンの DNS を識別するスクリプトがあります。探している DNS が使用されているかどうかを警告してくれます。これをさらに一歩進めて、指定された DNS が見つかった場合は、その特定の DNS を別の DNS に変更したいと考えています。基本的なアイデアと思われるスクリプトをいくつか見つけましたが、特定されたものを置き換えるとは思いません。リストの一番上にあるものだけです。

指定された DNS を識別する私の VBScript は次のとおりです。

'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

何か明確にできることがあれば教えてください!前もって感謝します!

4

1 に答える 1

1

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
于 2013-06-27T18:48:25.170 に答える