9/03/2008

vbScript to automatically changing a specific DNS Server on all Servers

The following vbScript replaces a specific DNS Server IP with another one, independed if the IP is the Primary or Secondary DNS Server.
  1. Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")  
  2. Dim objShell : Set objShell = CreateObject("Wscript.Shell")  
  3. Dim objFile : Set objFile = objFSO.OpenTextFile("c:\computers.txt")   
  4. Dim strOldIP : strOldIP = "1.1.1.1"  
  5. dim strNewIP : strNewIP = "2.2.2.2"  
  6. Dim arrDNSServer(2)  
  7. dim i : i = 0  
  8.    
  9. Do While Not objFile.AtEndOfStream  
  10.         currentserver = objFile.ReadLine  
  11.         Set objWMIService = GetObject("winmgmts:"  & "{impersonationLevel=impersonate}!\\" & currentserver & "\root\cimv2")  
  12.         Set colNicConfigs = objWMIService.ExecQuery  ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")  
  13.    
  14.         For Each objNicConfig In colNicConfigs  
  15.                 If Not IsNull(objNicConfig.DNSServerSearchOrder) Then  
  16.                         For Each strDNSServer In objNicConfig.DNSServerSearchOrder  
  17.                          arrDNSServer(i) = strDNSServer  
  18.                          i=i+1  
  19.                         Next  
  20.                 End If  
  21.         Next  
  22.   
  23.         If arrDNSServer(0) = strOldIP Then  
  24.    'Changing the primary dns server  
  25.    objShell.Run "netsh -r " ¤tserver &" interface ip set dnsserver " &chr(34) &"local area connection" &Chr(34) &" static " &strNewIP &" primary",1,True  
  26.    objShell.Run "netsh -r " ¤tserver &" interface ip delete dnsserver " &chr(34) &"local area connection" &Chr(34) &" " &arrDNSServer(1),1,True  
  27.    objShell.Run "netsh -r " ¤tserver &" interface ip add dns " &chr(34) &"local area connection" &Chr(34) &" " &arrDNSServer(1) &" index=2",1,True  
  28.   ElseIf arrDNSServer(1) = strOldIP Then  
  29.    'Changing the secondary DNS Server  
  30.    objShell.Run "netsh -r " ¤tserver &" interface ip delete dnsserver " &chr(34) &"local area connection" &Chr(34) &" " &arrDNSServer(0),1,True  
  31.    objShell.Run "netsh -r " ¤tserver &" interface ip set dnsserver " &chr(34) &"local area connection" &Chr(34) &" static " &arrDNSServer(0) &" primary",1,True  
  32.    objShell.Run "netsh -r " ¤tserver &" interface ip add dns " &chr(34) &"local area connection" &Chr(34) &" " &strNewIP &" index=2",1,True  
  33.   End If  
  34.  i = 0  
  35. Loop  

No comments: