Skip to main content

Powershell ile DNS Server Yönetimi - Part 1

· 2 min read

DNS Serverınız üzerinde bir takım değişiklikler yapmak isteyebiliriz. Bunlardan en yorucusu da DNS Server üzerinde tutulan Zone üzerinde yapılan değişikliklerdir. Windows Server 2012 kullanıyorsanız dnscmd yerine direk Powershell DNS Modülü içerisin de ilgili cmdletler üzerinden aynı işlemleri gerçekleştirebiliriz. İlerleyen yazılarımız da Powershell cmdlet kullanarak aynı işlemleri uygulamasını yapacağız. Eğer Windows Server 2008 R2 gibi işletim sistemleri kullanmakta iseniz, bu fonksiyon ile kolayca halledebilirsiniz.

Yapınızda Primary DNS Server bulunmakta ve üzerinde  bir çok domain isimleri tutmaktasınız. İhtiyaçlar doğrultusunda Secondary DNS Server konumlandırmanız gerekiyor, bunun için Primary DNS sunucu üzerinde bazı aksiyonlar almamız gerekiyor.( Secondary DNS Server için Zone Transfer  izinleri.)  Yazmış olduğum Powershell Fonksiyonun çalışma mantığı DNS Server üzerinde bulunan tüm Zone üzerinde Secondary DNS Server için Transfer izinlerini değiştirmek ile ilgili kullanabilirsiniz. DNS Serverınız üzerinde tutmuş olduğunuz tüm zone isimlerini bir  ".txt" içerisine çıkartarak  bu işlem oldukça kolay gerçekleştirebilirsiniz. DNS Konsolu üzerinde "Export List" diyerek çıkarma şansına sahipsiniz.

Primary DNS Server üzerinden çıkarmış olduğunuz zone isimlerinin bir yere kaydedilmesini sağlıyoruz.

DNS-Update Zone isimlerini çağırmak için "Get-Content" cmdlet kullanarak yazmış olduğum fonksiyon içerisine gönderiyorum. "-Verbose" parametresi ile detaylı sonuçlarını görmekteyim.

Get-Content C:\DNS.txt | Update-DNSTransferServer -SecondaryIPAddress 192.168.1.45 -Verbose

DNS-Update2

Başarıyla çalıştıktan sonra, DNS Konsolu üzerinden kontrol ediyorum.

DNS-Update3

Function Update-DNSTransferServer { [cmdletBinding()] param( [Parameter(Mandatory=$True, ValueFromPipeline=$true, Position=0)] [string[]]$Content, [Parameter(Mandatory=$True)] [string]$SecondaryIPAddress ) Begin { Write-Verbose "Zone Transfer içerisine $SecondaryIPAddress Ekleniyor." } Process { foreach ($get in $Content) { dnscmd /ZoneResetSecondaries $get /SecureList $SecondaryIPAddress | Out-Null Write-Verbose "$get adli zone icerisine ZoneTransfer olarak $SecondaryIPAddress eklendi" } } End { Write-Verbose "Basariyla tamamlanmistir." } }