===== 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}}