Public/Format-DNSRecords.ps1
using module ..\Class\DNSRecord.ps1 using module ..\Class\DNSZone.ps1 function Format-DNSRecords { [Cmdletbinding()] param( [Parameter(Mandatory,ValueFromPipeline)] [Array]$RealZones ) $Exportable = @() $ix = 0 foreach ($z in $RealZones) { $PercentComplete = [math]::Round(($ix/$RealZones.Count*100)) $name = $z.ZoneName Write-Progress -Id 0 -Activity "Untangling records for $name" -Status "$PercentComplete% Complete:" -PercentComplete ($ix/$RealZones.Count*100) $Records = Get-DnsServerResourceRecord -ZoneName $z.ZoneName $iz = 0 foreach ($r in $Records) { $PercentCompletex = [math]::Round(($iz/$Records.Count*100)) $HostName = $r.HostName Write-Progress -Id 1 -Activity "Processing record: $HostName" -Status "$PercentCompletex% Complete:" -PercentComplete ($iz/$Records.Count*100) -ParentId 0 $RecordObject = [DNSRecord]::New($z.ZoneName, $r.HostName, $r.RecordClass, $r.RecordType, $r.TimeToLive.TotalSeconds) if ($r.RecordType -eq "MX") { $RecordObject.MXPreference = $r.RecordData.Preference $RecordObject.Value = $r.RecordData.MailExchange } elseif ($r.RecordType -eq "A") { $RecordObject.Value = $r.RecordData.IPv4Address } elseif ($r.RecordType -eq "TXT") { $RecordObject.Value = $r.RecordData.DescriptiveText } elseif ($r.RecordType -eq "AAAA") { $RecordObject.Value = $r.RecordData.IPv6Address } elseif ($r.RecordType -eq "CNAME") { $RecordObject.Value = $r.RecordData.HostNameAlias } elseif ($r.RecordType -eq "SRV") { $RecordObject.Value = [string]$r.RecordData.Priority + " " + [string]$r.RecordData.Weight + " " + [string]$r.RecordData.Port + " " + $r.RecordData.DomainName } elseif (($r.RecordType -eq "NS") -or ($r.RecordType -eq "SOA")) { ## Throwaway records $RecordObject = $null } $Exportable = $Exportable + $RecordObject $iz++ } $ix++ } return $Exportable } |