Здравствуйте. Возникла задача смигрировать днс серверы. Смигрировать нужно было вторичный и первичный серверы. Ниже приведены примеры скриптов powershell которые позволяют скопировать все зоны с первичного DNS сервера на вторичный, скопировать все зоны с первичного сервера на первичный и удалить все зоны на сервере.
Копирование зон:
#имя компьютера с первичным DNS
$computer = "srvhost01"
#ip адрес компьютера с первичным DNS
$main_ip = "192.168.133.190"
$zones = Get-DnsServerZone -computername $computer
#ip адреса вторичных DNS
$servers = "192.168.133.196","192.168.133.187"
for ($k=0; $k -lt $zones.Length; $k++) {
if ((!$zones[$k].IsAutoCreated) -and ($zones[$k].ZoneName -ne "TrustAnchors")) {
$zf=$zones[$k].ZoneName +".dns"
$zones[$k].ZoneName
#Добавление разрешения на чтение зон на первичный DNS
Set-DnsServerPrimaryZone -ComputerName $computer -Name $zones[$k].ZoneName -Notify NotifyServers -NotifyServers $servers -SecureSecondaries TransferToSecureServers -SecondaryServers $servers -PassThru
#Собственно копирование
Add-DnsServerSecondaryZone -name $zones[$k].ZoneName -zonefile $zf -MasterServers $main_ip
}
}
Копирвоание зон на первичный сервер.
$computer = "srvhost01"
$main_ip = "192.168.133.190"
$zones = Get-DnsServerZone -computername $computer
$servers = "192.168.133.196","192.168.133.187","192.168.133.181"
$serversnew = "192.168.133.196","192.168.133.187"
for ($k=0; $k -lt $zones.Length; $k++) {
if ((!$zones[$k].IsAutoCreated) -and ($zones[$k].ZoneName -ne "TrustAnchors")) {
$zf=$zones[$k].ZoneName +".dns"
$zones[$k].ZoneName
Set-DnsServerPrimaryZone -ComputerName $computer -Name $zones[$k].ZoneName -Notify NotifyServers -NotifyServers $servers -SecureSecondaries TransferToSecureServers -SecondaryServers $servers -PassThru
Add-DnsServerSecondaryZone -name $zones[$k].ZoneName -zonefile $zf -MasterServers $main_ip
ConvertTo-DnsServerPrimaryZone -name $zones[$k].ZoneName -zonefile $zf -force
Set-DnsServerPrimaryZone -Name $zones[$k].ZoneName -Notify NotifyServers -NotifyServers $serversnew -SecureSecondaries TransferToSecureServers -SecondaryServers $serversnew -PassThru
}
}
И удаление зон с сервера:
$zones = Get-DnsServerZone -ComputerName srvvportalnew
for ($k=0; $k -lt $zones.Length; $k++) {
if ((!$zones[$k].IsAutoCreated) -and ($zones[$k].ZoneName -ne "TrustAnchors")) {
$zf=$zones[$k].ZoneName +".dns"
$zones[$k].ZoneName
Remove-DnsServerZone -name $zones[$k].ZoneName -force
}
}
