This script uses the Active Directory PowerShell module to locate duplicate proxyaddresses throughout your forest. The script must be run from a computer that have the AD PowerShell installed, and can reach all PDCEmulators in all domains in your forest.
Import-Module ActiveDirectory # Create hashmap for proxyaddresses $proxyaddresses = @{} # For each domain in the forest Get-ADForest | Select-Object -ExpandProperty Domains | Get-ADDomain | foreach { Write-Output ("Parsing domain {0} by contacting {1}" -f $_.Name, $_.PDCEmulator) # Get all AD objects that have proxyaddresses Get-ADObject -Filter {proxyaddresses -like "*"} -Properties proxyaddresses -Server $_.PDCEmulator | foreach { $_.proxyAddresses | foreach { $proxyaddresses[$_] += 1} } } Write-Output "Done, looking for duplicates" $duplicates = $proxyaddresses.Keys | where{$proxyaddresses[$_] -gt 1} # Output proxyaddresses that are duplicates if($duplicates) { Write-Output "The following proxyaddresses was found multiple times" $duplicates # | Out-Gridview # Remove first hash-sign in order to get an "Excel"-view. Needs PowerShell ISE. } else { Write-Output "No duplicates found" }