2013-06-27 2 views
1

VBScript를 사용하여 실행되는 컴퓨터의 DNS를 식별하는 스크립트가 있습니다. 찾고있는 DNS가 사용 중인지 알려주고 있습니다. 내 희망은 한 걸음 더 나아가 특정 DNS를 발견하면 특정 DNS를 다른 DNS로 변경하는 것입니다. 나는 기본적인 생각처럼 보이는 몇몇 스크립트를 발견했다. 그러나 나는 그들이리스트의 맨 위에있는 것으로 확인 된 것을 대체 할 것이라고 생각하지 않는다.여러 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 지정된 식별합니다 내 VBScript를합니다. 나는 특히 다른 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