The Magician

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
ad.dns [2026/02/13 13:08] jpad.dns [2026/03/12 09:59] (current) jp
Line 6: Line 6:
  
   dnscmd /zoneexport zone_name "zone_name.txt"   dnscmd /zoneexport zone_name "zone_name.txt"
-Если нам требуется регулярно выгружать содержимое зоны и копировать в определенную папку, поможет простой скрипт. В данном скрипте приходится сначала удалять существующий файл зоны, выгруженный прежней итерацией скрипта, поскольку //dnscmd// не умеет перезаписывать существующие файлы. +Если нам требуется регулярно выгружать содержимое зоны и копировать в определенную папку, поможет простой cmd-скрипт, выполнение которого можно задать в планировщике. В данном скрипте приходится сначала удалять существующий файл зоны, выгруженный прежней итерацией скрипта, поскольку //dnscmd// не умеет перезаписывать существующие файлы. 
 <code> <code>
 del "C:\Windows\system32\dns\zone_name.txt" del "C:\Windows\system32\dns\zone_name.txt"
Line 19: 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}} {{tag>ActiveDirectory Microsoft PowerShell DNS}}
  
ad.dns.1770988114.txt.gz · Last modified: by jp