segunda-feira, 30 de agosto de 2010

Listar Entradas Estáticas no DNS

Na console do DNS Windows 2003, não é possível diferenciar entradas dinâmicas de entradas estáticas. Na console do DNS Windows 2008 a diferenciação é clara.

Para listar as entradas estáticas, basta copiar o código abaixo e salvar como DNS_StaticEntry.vbs, depois para executar utilize o comando abaixo no prompt de comando:

Cscript DNS_StaticEntry.vbs -SRV "Servidor DNS" -ZONE "Zona DNS"


'******************************************************
'* Autor: Maikon Demacq
'* Versão: 1.0
'* Última Modificação: 23/07/2009
'*
'* Este script contempla:
'* Lista as entradas estaticas em uma zona de DNS
'*
'* Sintaxe:
'* Cscript DNS_StaticEntry.vbs Parâmetros
'******************************************************

On Error Resume Next

Main
Sub printHelp
   Wscript.echo "DNS_StaticEntry.vbs v1.0"
   Wscript.echo "Este script lista as entradas estaticas em uma zona de DNS"
   Wscript.echo ""
   Wscript.echo "Usage: cscript DNS_StaticEntry.vbs [-SRV ""Server""] [-ZONE ""DNS Zone Name""]"
   Wscript.echo "Example: cscript DNS_StaticEntry.vbs -SRV ""Lodon"" -ZONE ""contoso.com"""
End Sub

Sub Main
   If WScript.Arguments.Length = 4 Then
      Select Case UCase(WScript.Arguments.Item(0))
      Case "-SRV"
         Select Case UCase(WScript.Arguments.Item(2))
         Case "-ZONE"
            If (WScript.Arguments.Length = 4) Then
               EnumStaticEntry UCase(WScript.Arguments.Item(1)),UCase(WScript.Arguments.Item(3))
            Else
               printHelp
            End If
         Case Else
            printHelp
         End Select
      Case Else
         printHelp
      End Select
   Else
      printHelp
   End If
End Sub


Sub EnumStaticEntry (Byval strServerName, Byval strContainerName)
   Set objWMIService = GetObject("winmgmts:\\" & strServerName & "\root\MicrosoftDNS")
   strEntry = "AAAA,AFSDB,ATMA,A,CNAME,HINFO,ISDN,KEY,MB,MD,MF,MG,MINFO,MR,MX,NXT,PTR,RP,RP,RT,SIG,SRV,TXT,WINSR,WINS,WKS,X25"
   strType = Split(strEntry,",",-1,1)
  
   WScript.Echo "Servidor DNS: " & strServerName & VBCrlf &_
                      "Zona de DNS : " & strContainerName & VBCrlf &_
                      "Entradas DNS: " & strEntry & VBCrlf & VBCrlf

   For i=LBound(strType) To UBound(strType)
      Set colItems = objWMIService.ExecQuery("SELECT * FROM MicrosoftDNS_" & strType(i) & "Type WHERE ContainerName='" & strContainerName & "' AND TimeStamp=0")
      For Each objItem In colItems
         WScript.Echo objItem.OwnerName & VbTab & strType(i) & VbTab & "Static" & VbTab & objItem.RecordData
      Next
      Set colItems = Nothing
   Next
   Set objWMIService = Nothing
End Sub

Nenhum comentário:

Postar um comentário