PowerShell ile DNS kayıtlarını CSV'ye aktarma


Windows DNS'nizdeki tüm DNS kayıtlarının yedeğini almak istiyorsunuz. DNS Yöneticisinin bu tür dışa aktarma işlemleri oldukça sınırlıdır. İyi bir DNS kayıtlarını dışa aktarmanın tek yolu PowerShell'dir. Bu yazımızda DNS kayıtlarını PowerShell ile CSV dosyasına nasıl aktaracağınızı öğreneceksiniz.

Tek DNS bölgesini DNS Yöneticisinden dışa aktarın

DNS Yöneticisi'nde tek bir DNS bölgesinden tüm kayıtların nasıl dışa aktarılacağına bakalım:

  1. DNS Yöneticisi'ni açın

  2. Bir bölgeyi sağ tıklayın

  3. Listeyi Dışa Aktar…'ı seçin

  1. Dışa aktarma dosyasına bir ad verin

  2. Metin (Virgülle Ayrılmış) (*.csv) türü olarak kaydet

  3. Kaydet'i tıklayın

  1. CSV dosyasını Microsoft Excel veya başka bir programla açın

Tek bir bölgeyi DNS Yöneticisi'nden dışa aktarmak hızlıdır. CSV dosyası değerleri, DNS Yöneticisi ile aynı değerleri gösterir. Tek sorun, dosyada virgül (,) olduğunda sütunların olması gerektiği gibi görüntülenmemesidir.

Tüm İleriye Doğru Arama Bölgelerini DNS Yöneticisinden dışa aktarın

Tüm İleriye Doğru Arama DNS Bölgeleri kayıtlarını DNS Yöneticisinden dışa aktarmak için:

  1. DNS Yöneticisi'ni açın

  2. Bir bölgeyi sağ tıklayın

  3. Listeyi Dışa Aktar…'ı seçin

  1. Dışa aktarma dosyasına bir ad verin

  2. Metin (Virgülle Ayrılmış) (*.csv) türü olarak kaydet

  3. Kaydet'i tıklayın

  1. CSV dosyasını Microsoft Excel veya başka bir programla açın

En büyük sorun, herhangi bir DNS kaydı göstermemesidir. Bu nedenle, kayıtları görmek için her DNS sunucusu bölgesini DNS Yöneticisinden ayrı ayrı dışa aktarmanız gerekir.

Ayrıca başka bir mülke sahip olmak isterseniz ne olur? Örneğin, Yaşam Süresi özelliğinin ihracatta olması mükemmel bir özelliktir. Bunu elde etmenin tek yolu PowerShell'dir. Bir sonraki adımda buna bakalım.

PowerShell ile tek bölge DNS kayıtlarını CSV dosyasına aktarma

Kayıtları tek bir DNS bölgesinden CSV dosyasına aktarmanın mükemmel bir yolu PowerShell betiğidir. Belirtilen bölgeden DNS kaynak kayıtlarını almak için Get-DnsServerResourceRecord cmdlet'ini kullanacaktır.

Not: PowerShell betiği ayrıca DNS kaydının Yaşam Süresi (TTL) özelliğini de dışa aktaracaktır. Böylece bunu CSV dosyasından kolayca kontrol edebilirsiniz. Yaşam Süresi sütunda toplam saniye olarak görünür.

  1. Windows PowerShell ISE'yi yönetici olarak çalıştırın

  2. Aşağıdaki betiği kopyalayıp PowerShell'e yapıştırın

  3. 2. satırdaki DNS bölgesi adını değiştirin

  4. PS komut dosyasını çalıştırın

$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

CSV dosyasının dışa aktarımı C:\temp konumunda olacaktır. İşte CSV dosyasının nasıl göründüğü.

Tüm bölgelerden geçmek ve bunları dışa aktarmak zaman alır. Yalnızca tek bir DNS sunucusu bölgesini dışa aktarmak istiyorsanız ancak tüm DNS bölgeleri kayıtlarını dışa aktaracaksanız kullanışlıdır.

PowerShell ile tüm DNS bölgeleri kayıtlarını CSV dosyasına aktarın

Tüm DNS bölgeleri kayıtlarını dışarı aktarmak için aşağıdaki PowerShell betiğini çalıştırın. Bir DNS sunucusundaki DNS bölgelerini almak için Get-DnsServerZone cmdlet'ini ve tüm bölgelerden DNS kaynak kayıtlarını almak için Get-DnsServerResourceRecord cmdlet'ini kullanacaktır.

Komut dosyası her iki Windows DNS bölgesinden de geçecektir:

  • İleriye Doğru Arama Bölgeleri

  • Geriye Doğru Arama Bölgeleri

$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

Tüm DNS kayıtlarını C:\temp konumundaki bir CSV dosyasına aktaracaktır. CSV dosyası böyle görünüyor.

Bu kadar!

Devamını oku: PowerShell ile eski DNS kayıtları nasıl temizlenir »

Çözüm

PowerShell ile DNS kayıtlarını CSV'ye nasıl aktaracağınızı öğrendiniz. DNS kayıtlarını DNS Yöneticisi ile dışarı aktarmak istediğinizde sınırlamalar vardır. PowerShell ile dışa aktarma sonuçlarını beğeninize göre değiştirebilirsiniz. Önemli değişiklikler yapmadan önce DNS kayıtlarının yedeğini almak her zaman iyidir. PowerShell betiği ihtiyaçlarınızı karşılayacaktır.

Bu makaleyi beğendiniz mi? PowerShell betiğiyle Active Directory sağlık kontrolünü de beğenebilirsiniz. Bizi takip etmeyi ve bu yazımızı paylaşmayı unutmayın.

İlgili makaleler