function Get-DnsByIP { <# .SYNOPSIS Retrieves all DNS records for a given IP address from Active Directory DNS. .DESCRIPTION Retrieves all DNS records for a given IP address from Active Directory DNS. .PARAMETER DNSServer [string] The DNS server to query. .PARAMETER IPAddress [string] The IP Address to query against. .EXAMPLE Get-DnsByIP -TargetIP 192.168.4.55 -DnsServer 'dc314212.fh.local' #> [CmdletBinding()] [OutputType([System.Object[]])] param( [Alias("DomainController")] [string]$DNSServer = "localhost", [Parameter(Mandatory)] [Alias("TargetIP")] [string]$IPAddress ) $logLead = (Get-LogLeadName) #Verify that the 'Get-DnsServerZone' command is available on the workstation if ($null -ne (Get-Command -Name Get-DnsServerZone -ErrorAction SilentlyContinue)) { #Get all of the DNS Zones $zones = @(Get-DnsServerZone -ComputerName $DNSServer).ZoneName #Is the $zones array empty? if (Test-IsCollectionNullOrEmpty -Collection $zones) { Write-Host "$logLead : No zones found" return } #Create an array $resources = @() #Iterate through each zone and add to $resources array if it matches the $IPAddress parameter value foreach ($zone in $zones) { $resources += (Get-DnsServerResourceRecord -ZoneName $zone -ComputerName $DNSServer) | Where-Object {$_.RecordData.IPv4Address.IPAddressToString -eq $IPAddress} } return $resources } else { Write-Error "$logLead : The command 'Get-DnsServerZone' does not exist on this system. Please verify you are running this on a Domain Controller under an admin accont" } }