===== AD.DNS ===== ==== Выгрузка DNS зоны в текстовый файл ==== В старых версиях Windows Server (к примеру, Windows Server 2008 R2) - мы можем выгрузить зону такой командой: dnscmd /zoneexport zone_name "zone_name.txt" Если нам требуется регулярно выгружать содержимое зоны и копировать в определенную папку, поможет простой cmd-скрипт, выполнение которого можно задать в планировщике. В данном скрипте приходится сначала удалять существующий файл зоны, выгруженный прежней итерацией скрипта, поскольку //dnscmd// не умеет перезаписывать существующие файлы. del "C:\Windows\system32\dns\zone_name.txt" dnscmd /zoneexport pcr.int "zone_name.txt" xcopy /I /Y "C:\Windows\system32\dns\zone_name.txt" "C:\DNS\" Файл следует искать тут: C:\Windows\system32\dns\ В более новых версиях Windows Server - можно использовать PowerShell. Пример экспорта: Export-DnsServerZone -Name "zone_name" -FileName "zone_name.txt" ==== Скрипт получения настроек DNS адаптеров серверов в домене ==== Скрипт принимает перечень серверов (или любых компьютеров), содержащихся в файле //C:\scripts\servers.txt//, получит настройки DNS сетевых адаптеров (где они заданы) и выведет результаты в файл: //C:\scripts\Dns_Success.csv//. Из результатов будут исключены loopback-интерфейсы. Ошибки подключения или выполнения скрипта будут записаны в файл: //C:\scripts\Dns_Errors.csv//. $servers = Get-Content -Path "C:\scripts\servers.txt" $SuccessResults = @() $ErrorResults = @() foreach ($server in $servers) { Write-Host "Processing $server ..." -ForegroundColor Cyan try { $result = Invoke-Command -ComputerName $server ` -ScriptBlock { Get-DnsClientServerAddress | Where-Object {$_.ServerAddresses -and $_.interfacealias -notlike "*Loop*"} | Select-Object InterfaceAlias, ServerAddresses } -ErrorAction Stop foreach ($item in $result) { $SuccessResults += [PSCustomObject]@{ ComputerName = $server InterfaceAlias = $item.InterfaceAlias ServerAddresses = ($item.ServerAddresses -join ", ") Status = "Success" ErrorMessage = $null } } } catch { $ErrorResults += [PSCustomObject]@{ ComputerName = $server InterfaceAlias = $null ServerAddresses = $null Status = "Failed" ErrorMessage = $_.Exception.Message } Write-Host "Error on $server: $($_.Exception.Message)" -ForegroundColor Red } } # Saving results $SuccessResults | Export-Csv "C:\scripts\Dns_Success.csv" -NoTypeInformation -Encoding UTF8 # Saving errors $ErrorResults | Export-Csv "C:\scripts\Dns_Errors.csv" -NoTypeInformation -Encoding UTF8 Write-Host "Ready. Results Saved." -ForegroundColor Green {{tag>ActiveDirectory Microsoft PowerShell DNS}}