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:
DNS Yöneticisi'ni açın
Bir bölgeyi sağ tıklayın
Listeyi Dışa Aktar…'ı seçin
Dışa aktarma dosyasına bir ad verin
Metin (Virgülle Ayrılmış) (*.csv) türü olarak kaydet
Kaydet'i tıklayın
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:
DNS Yöneticisi'ni açın
-
Bir bölgeyi sağ tıklayın
Listeyi Dışa Aktar…'ı seçin
Dışa aktarma dosyasına bir ad verin
Metin (Virgülle Ayrılmış) (*.csv) türü olarak kaydet
Kaydet'i tıklayın
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.
Windows PowerShell ISE'yi yönetici olarak çalıştırın
Aşağıdaki betiği kopyalayıp PowerShell'e yapıştırın
2. satırdaki DNS bölgesi adını değiştirin
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 utf8CSV 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 utf8Tü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.







