Public/Network/Get-ADDNSInfo.ps1
|
function Get-ADDNSInfo { [CmdletBinding()] param() try { $dnsServer = Get-ADDomainController -Discover | Select-Object -ExpandProperty HostName # Get all DNS zones $zones = Get-DnsServerZone -ComputerName $dnsServer | ForEach-Object { $zone = $_ # Get all records for this zone $records = Get-DnsServerResourceRecord -ComputerName $dnsServer -ZoneName $zone.ZoneName | ForEach-Object { [PSCustomObject]@{ Name = $_.HostName RecordType = $_.RecordType RecordData = $_.RecordData.IPv4Address ?? $_.RecordData.HostNameAlias ?? $_.RecordData.DomainName ?? $_.RecordData.StringData Timestamp = $_.Timestamp TimeToLive = $_.TimeToLive } } # Special handling for SRV records $srvRecords = $records | Where-Object RecordType -eq 'SRV' [PSCustomObject]@{ ZoneName = $zone.ZoneName ZoneType = $zone.ZoneType IsDsIntegrated = $zone.IsDsIntegrated IsReverseLookupZone = $zone.IsReverseLookupZone DynamicUpdate = $zone.DynamicUpdate Records = $records ServiceRecords = $srvRecords ReplicationScope = $zone.ReplicationScope DirectoryPartitionName = $zone.DirectoryPartitionName } } return [PSCustomObject]@{ ForwardLookupZones = $zones | Where-Object { -not $_.IsReverseLookupZone } ReverseLookupZones = $zones | Where-Object IsReverseLookupZone } } catch { Write-Log "Error retrieving DNS information: $($_.Exception.Message)" -Level Error return $null } } |