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:
Abra el Administrador de DNS
Haga clic derecho en una zona
Seleccione Exportar lista…
Dale un nombre al archivo de exportación.
Guardar como tipo Texto (delimitado por comas) (*.csv)
Haga clic en Guardar
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:
Abra el Administrador de DNS
-
Haga clic derecho en una zona
Seleccione Exportar lista…
Dale un nombre al archivo de exportación.
Guardar como tipo Texto (delimitado por comas) (*.csv)
Haga clic en Guardar
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.
Ejecute Windows PowerShell ISE como administrador
Copie y pegue el siguiente script en PowerShell
Cambie el nombre de la zona DNS en la línea 2
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 utf8La 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 utf8Exportará 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.







