option explicit
on error resume next

Dim arrServers
Dim strUsername, strPassword
Dim dicDNSConfig

' Tablica sprawdzanych serwerw DNS
arrServers = Array("dns01.rallencorp.com","dns02.rallencorp.com")

' Konto i haso uytkownika upowanionego do zmiany konfiguracji serwerw DNS
strUsername = "administrator_serwera_DNS"
strPassword = "haso_administratora"

' Obiekt sownikowy bdzie przechowywa pary (zoone z kluczy i wartoci) dla
' wszystkich ustawie serwerw DNS, ktre maj zosta sprawdzone i skonfigurowane.
Set dicDNSConfig = CreateObject("Scripting.Dictionary") 
dicDNSConfig.Add "AllowUpdate",             1
dicDNSConfig.Add "LooseWildCarding",        TRUE
dicDNSConfig.Add "MaxCacheTTL",             900
dicDNSConfig.Add "MaxNegativeCacheTTL",     60
dicDNSConfig.Add "EventLogLevel",           0
dicDNSConfig.Add "StrictFileParsing",       TRUE
dicDNSConfig.Add "DisableAutoReverseZones", TRUE

Dim arrDNSConfigKeys
arrDNSConfigKeys = dicDNSConfig.keys

Dim objLocator
Set objLocator = CreateObject("WbemScripting.SWbemLocator")

Dim x, y, boolRestart
For x = LBound(arrServers) to UBound(arrServers)
   boolRestart = False

   WScript.echo arrServers(x)

   Dim objDNS, objDNSServer
   Set objDNS = objLocator.ConnectServer(arrServers(x), _
                                         "root\MicrosoftDNS", _
                                         strUserName, strPassword)
   set objDNSServer = objDNS.Get("MicrosoftDNS_Server.Name="".""")

   for y = 0 To dicDNSConfig.Count - 1
      Dim strKey
      strKey = arrDNSConfigKeys(y)

      WScript.Echo "  Sprawdzanie " & strKey
      if dicDNSConfig.Item(strKey) <> objDNSServer.Properties_.Item(strKey) then
         objDNSServer.Properties_.Item(strKey).value = dicDNSConfig(strKey)
         objDNSServer.Put_     
         boolRestart = TRUE
         if Err Then
            WScript.Echo "    Wystpi bd podczas ustawiania " & strKey & " : " & _
                         Err.Description
            Wscript.Quit
         else
            WScript.Echo "    " & strKey & " uaktualniony."
         end if
      end if
   Next 

   if boolRestart then
      objDNSServer.StopService
      if Err Then
         WScript.Echo "Metoda StopService zwrcia bd: " & Err.Description
         Wscript.Quit
      end if

      objDNSServer.StartService
      if Err Then
         WScript.Echo "Metoda StartService zwrcia bd: " & Err.Description
         Wscript.Quit
      end if
      WScript.Echo "Usuga ponownie uruchomiona."
   end if

   WScript.Echo ""
next
