Exportieren Sie DNS-Einträge mit PowerShell in CSV

Sie möchten eine Sicherungskopie aller DNS-Einträge von Ihrem Windows-DNS haben. Der DNS-Manager ist bei solchen Exporten sehr eingeschränkt. Die einzige Möglichkeit, einen guten Export von DNS-Einträgen zu erhalten, ist PowerShell. In diesem Artikel erfahren Sie, wie Sie DNS-Einträge mit PowerShell in eine CSV-Datei exportieren.

Exportieren Sie eine einzelne DNS-Zone aus dem DNS-Manager

Schauen wir uns an, wie Sie alle Datensätze aus einer einzelnen DNS-Zone im DNS-Manager exportieren:

  1. OffenDNS-Manager
  2. Klicken Sie mit der rechten Maustaste auf aZone
  3. WählenListe exportieren…
  1. Geben Sie der Exportdatei einen Namen
  2. Als Typ speichernText (durch Kommas getrennt) (*.csv)
  3. KlickenSpeichern
  1. Öffnen Sie die CSV-Datei mit Microsoft Excel oder einem anderen Programm

Der Export einer einzelnen Zone aus dem DNS-Manager geht schnell. Die CSV-Dateiwerte zeigen dieselben Werte wie der DNS-Manager. Das einzige Problem besteht darin, dass die Spalten nicht wie gewünscht angezeigt werden, wenn die Datei ein Komma (,) enthält.

Erfahren Sie mehr:So verwenden Sie Export-CSV in PowerShell

Exportieren Sie alle Forward-Lookup-Zonen aus dem DNS-Manager

So exportieren Sie alle Forward-Lookup-DNS-Zoneneinträge aus dem DNS-Manager:

  1. OffenDNS-Manager
  2. Klicken Sie mit der rechten Maustaste auf aZone
  3. WählenListe exportieren…
  1. Geben Sie der Exportdatei einen Namen
  2. Als Typ speichernText (durch Kommas getrennt) (*.csv)
  3. KlickenSpeichern
  1. Öffnen Sie die CSV-Datei mit Microsoft Excel oder einem anderen Programm

Das große Problem ist, dass keine DNS-Einträge angezeigt werden. Sie müssen also jede DNS-Serverzone einzeln aus dem DNS-Manager exportieren, um die Einträge anzuzeigen.

Und was ist, wenn Sie eine andere Immobilie haben möchten? Beispielsweise eignet sich die Eigenschaft „Time to Live“ hervorragend für den Export. Der einzige Weg, dies zu erreichen, ist mit PowerShell. Schauen wir uns das im nächsten Schritt an.

Exportieren Sie Einzelzonen-DNS-Einträge mit PowerShell in eine CSV-Datei

Eine hervorragende Möglichkeit, die Datensätze aus einer einzelnen DNS-Zone in eine CSV-Datei zu exportieren, ist die Verwendung eines PowerShell-Skripts. Es wird das verwendenGet-DnsServerResourceRecordCmdlet zum Abrufen der DNS-Ressourceneinträge aus der angegebenen Zone.

Notiz:Das PowerShell-Skript exportiert auch den DNS-EintragZeit zum Leben(TTL)-Eigenschaft. Das können Sie also ganz einfach in der CSV-Datei überprüfen. Die Time to Live wird als Gesamtzahl der Sekunden in der Spalte angezeigt.

  1. Führen Sie Windows PowerShell ISE als Administrator aus
  2. Kopieren Sie das Skript unten und fügen Sie es in PowerShell ein
  3. Ändern Sie den DNS-ZonennamenZeile 2
  4. Führen Sie das PS-Skript aus
$Report = [System.Collections.Generic.List[Object]]::new()
$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 }
    }
    $ReportLine = [PSCustomObject]@{
        Name       = $zoneName
        Hostname   = $info.Hostname
        Type       = $info.RecordType
        Data       = $recordData
        Timestamp  = $timestamp
        TimeToLive = $timetolive
    }
    $Report.Add($ReportLine)
}
$Report | Export-Csv "C:tempSingleDNSZoneRecords.csv" -NoTypeInformation -Encoding utf8

Der CSV-Dateiexport erfolgt inC:Temp. So sieht die CSV-Datei aus.

Das Durchsuchen aller Zonen und deren Export nimmt Zeit in Anspruch. Dies ist praktisch, wenn Sie nur eine einzelne DNS-Serverzone exportieren möchten, nicht jedoch, wenn Sie alle DNS-Zoneneinträge exportieren möchten.

Exportieren Sie alle DNS-Zoneneinträge mit PowerShell in eine CSV-Datei

Um alle DNS-Zoneneinträge zu exportieren, führen Sie das folgende PowerShell-Skript aus. Es wird das verwendenGet-DnsServerZoneCmdlet zum Abrufen der DNS-Zonen auf einem DNS-Server und derGet-DnsServerResourceRecordCmdlet zum Abrufen der DNS-Ressourceneinträge aus allen Zonen.

Das Skript durchläuft beide Windows-DNS-Zonen:

  • Forward-Lookup-Zonen
  • Reverse-Lookup-Zonen
$Report = [System.Collections.Generic.List[Object]]::new()
$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 }
        }
        $ReportLine = [PSCustomObject]@{
            Name       = $zone.ZoneName
            Hostname   = $info.Hostname
            Type       = $info.RecordType
            Data       = $recordData
            Timestamp  = $timestamp
            TimeToLive = $timetolive
        }
        $Report.Add($ReportLine)
    }
}
$Report | Export-Csv "C:tempAllDNSZonesRecords.csv" -NoTypeInformation -Encoding utf8

Es werden alle DNS-Einträge in eine CSV-Datei exportiertC:Temp. So sieht die CSV-Datei aus.

Das ist es!

Abschluss

Sie haben gelernt, wie Sie DNS-Einträge mit PowerShell in CSV exportieren. Es gibt Einschränkungen, wenn Sie DNS-Einträge mit DNS Manager exportieren möchten. Mit PowerShell können Sie die Exportergebnisse nach Ihren Wünschen anpassen. Es ist immer gut, eine Sicherung der DNS-Einträge durchzuführen, bevor Sie wesentliche Änderungen vornehmen. Das PowerShell-Skript deckt Ihre Anforderungen ab.

Hat Ihnen dieser Artikel gefallen? Vielleicht gefällt Ihnen auch die Active Directory-Zustandsprüfung mit PowerShell-Skript. Vergessen Sie nicht, uns zu folgen und diesen Artikel zu teilen.

Related Posts