The Magician

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
ad.dns [2026/02/13 09:36] – created jpad.dns [2026/03/12 09:59] (current) jp
Line 1: Line 1:
 ===== AD.DNS ===== ===== AD.DNS =====
  
-==== Выгрузка DNS зоны ====+==== Выгрузка DNS зоны в текстовый файл ====
  
 В старых версиях Windows Server (к примеру, Windows Server 2008 R2) - мы можем выгрузить зону такой командой: В старых версиях Windows Server (к примеру, Windows Server 2008 R2) - мы можем выгрузить зону такой командой:
  
   dnscmd /zoneexport zone_name "zone_name.txt"   dnscmd /zoneexport zone_name "zone_name.txt"
 +Если нам требуется регулярно выгружать содержимое зоны и копировать в определенную папку, поможет простой cmd-скрипт, выполнение которого можно задать в планировщике. В данном скрипте приходится сначала удалять существующий файл зоны, выгруженный прежней итерацией скрипта, поскольку //dnscmd// не умеет перезаписывать существующие файлы. 
 +<code>
 +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\"
 +</code>
 +
 Файл следует искать тут: Файл следует искать тут:
  
Line 12: Line 19:
  
    Export-DnsServerZone -Name "zone_name" -FileName "zone_name.txt"    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//.
 +
 +<code>
 +$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
 +</code>
 +{{tag>ActiveDirectory Microsoft PowerShell DNS}}
  
ad.dns.1770975415.txt.gz · Last modified: by jp