Búsqueda de sitios web

Exportar registros DNS a CSV con PowerShell


Quiere tener una copia de seguridad de todos los registros DNS de su DNS de Windows. El Administrador de DNS está muy limitado con este tipo de exportaciones. La única forma de obtener una buena exportación de registros DNS es con PowerShell. En este artículo, aprenderá cómo exportar registros DNS a un archivo CSV con PowerShell.

Exportar zona DNS única desde el Administrador de DNS

Veamos cómo exportar todos los registros de una única zona DNS en el Administrador de DNS:

  1. Abra el Administrador de DNS

  2. Haga clic derecho en una zona

  3. Seleccione Exportar lista…

  1. Dale un nombre al archivo de exportación.

  2. Guardar como tipo Texto (delimitado por comas) (*.csv)

  3. Haga clic en Guardar

  1. Abra el archivo CSV con Microsoft Excel u otro programa

Exportar una sola zona desde DNS Manager es rápido. Los valores del archivo CSV muestran los mismos valores que el Administrador de DNS. El único problema es que las columnas no se muestran como deberían cuando hay una coma (,) en el archivo.

Exporte todas las zonas de búsqueda directa desde el Administrador de DNS

Para exportar todos los registros de zonas DNS de búsqueda directa desde el Administrador de DNS:

  1. Abra el Administrador de DNS

  2. Haga clic derecho en una zona

  3. Seleccione Exportar lista…

  1. Dale un nombre al archivo de exportación.

  2. Guardar como tipo Texto (delimitado por comas) (*.csv)

  3. Haga clic en Guardar

  1. Abra el archivo CSV con Microsoft Excel u otro programa

El gran problema es que no muestra ningún registro DNS. Por lo tanto, debe exportar cada zona del servidor DNS individualmente desde el Administrador de DNS para ver los registros.

Además, ¿qué pasa si quieres tener otra propiedad? Por ejemplo, es excelente tener la propiedad Time to Live en la exportación. La única forma de conseguirlo es con PowerShell. Analicemos eso en el siguiente paso.

Exporte registros DNS de zona única a un archivo CSV con PowerShell

Una excelente manera de exportar los registros de una única zona DNS a un archivo CSV es con un script de PowerShell. Utilizará el cmdlet Get-DnsServerResourceRecord para recuperar los registros de recursos DNS de la zona especificada.

Nota: El script de PowerShell también exportará la propiedad Tiempo de vida (TTL) del registro DNS. Para que puedas comprobarlo fácilmente en el archivo CSV. El tiempo de vida aparece como segundos totales en la columna.

  1. Ejecute Windows PowerShell ISE como administrador

  2. Copie y pegue el siguiente script en PowerShell

  3. Cambie el nombre de la zona DNS en la línea 2

  4. Ejecute el script PS

$dnsRecords = @()
$zoneName = "autodiscover.exoip.com"
$zoneInfo = Get-DnsServerResourceRecord -ZoneName $zoneName
foreach ($info in $zoneInfo) {
    $timestamp = if ($info.Timestamp) { $info.Timestamp } else { "static" }
    $timetolive = $info.TimeToLive.TotalSeconds
    $recordData = switch ($info.RecordType) {
        'A' { $info.RecordData.IPv4Address }
        'CNAME' { $info.RecordData.HostnameAlias }
        'NS' { $info.RecordData.NameServer }
        'SOA' { "[$($info.RecordData.SerialNumber)] $($info.RecordData.PrimaryServer), $($info.RecordData.ResponsiblePerson)" }
        'SRV' { $info.RecordData.DomainName }
        'PTR' { $info.RecordData.PtrDomainName }
        'MX' { $info.RecordData.MailExchange }
        'AAAA' { $info.RecordData.IPv6Address }
        'TXT' { $info.RecordData.DescriptiveText }
        default { $null }
    }
    $dnsRecords += [pscustomobject]@{
        Name       = $zoneName
        Hostname   = $info.Hostname
        Type       = $info.RecordType
        Data       = $recordData
        Timestamp  = $timestamp
        TimeToLive = $timetolive
    }
}
$dnsRecords | Export-Csv "C:\temp\SingleDNSZoneRecords.csv" -NoTypeInformation -Encoding utf8

La exportación del archivo CSV estará en C:\temp. Así es como se ve el archivo CSV.

Recorrer todas las zonas y exportarlas lleva tiempo. Es útil si solo desea exportar una única zona del servidor DNS, pero no si va a exportar todos los registros de las zonas DNS.

Exporte todos los registros de zonas DNS a un archivo CSV con PowerShell

Para exportar todos los registros de zonas DNS, ejecute el siguiente script de PowerShell. Utilizará el cmdlet Get-DnsServerZone para recuperar las zonas DNS en un servidor DNS y el cmdlet Get-DnsServerResourceRecord para recuperar los registros de recursos DNS de todas las zonas.

El script pasará por ambas zonas DNS de Windows:

  • Zonas de búsqueda directa

  • Zonas de búsqueda inversa

$dnsRecords = @()
$zones = Get-DnsServerZone
foreach ($zone in $zones) {
    $zoneInfo = Get-DnsServerResourceRecord -ZoneName $zone.ZoneName
    foreach ($info in $zoneInfo) {
        $timestamp = if ($info.Timestamp) { $info.Timestamp } else { "static" }
        $timetolive = $info.TimeToLive.TotalSeconds
        $recordData = switch ($info.RecordType) {
            'A' { $info.RecordData.IPv4Address }
            'CNAME' { $info.RecordData.HostnameAlias }
            'NS' { $info.RecordData.NameServer }
            'SOA' { "[$($info.RecordData.SerialNumber)] $($info.RecordData.PrimaryServer), $($info.RecordData.ResponsiblePerson)" }
            'SRV' { $info.RecordData.DomainName }
            'PTR' { $info.RecordData.PtrDomainName }
            'MX' { $info.RecordData.MailExchange }
            'AAAA' { $info.RecordData.IPv6Address }
            'TXT' { $info.RecordData.DescriptiveText }
            default { $null }
        }
        $dnsRecords += [pscustomobject]@{
            Name       = $zone.ZoneName
            Hostname   = $info.Hostname
            Type       = $info.RecordType
            Data       = $recordData
            Timestamp  = $timestamp
            TimeToLive = $timetolive
        }
    }
}
$dnsRecords | Export-Csv "C:\temp\AllDNSZonesRecords.csv" -NoTypeInformation -Encoding utf8

Exportará todos los registros DNS a un archivo CSV en C:\temp. Así es como se ve el archivo CSV.

¡Eso es todo!

Leer más: Cómo limpiar registros DNS obsoletos con PowerShell »

Conclusión

Aprendió a exportar registros DNS a CSV con PowerShell. Existen limitaciones cuando desea exportar registros DNS con DNS Manager. Con PowerShell, puedes modificar los resultados de la exportación a tu gusto. Siempre es bueno tener una copia de seguridad de los registros DNS antes de realizar cambios importantes. El script de PowerShell cubrirá sus necesidades.

Disfrutaste este artículo? También te puede interesar la comprobación del estado de Active Directory con el script de PowerShell. No olvides seguirnos y compartir este artículo.

Artículos relacionados