I’m occasionally asked to provide a list of account names based on a list of email addresses. This is pretty straight foward when the list of addresses contains only primary email addresses.
Get-Content C:\scripts\users.txt | %{Get-ADUser -Filter {mail -like $_} -Properties *} | ft name, displayName, eduPersonPrimaryAffiliation, PasswordLastSet -AutoSize
However, it’s very important to point out that the previous command will only match on the primary email address. Most of the time our list of address does not contain only primary email addresses – it may contain one of several secondary addresses the user has, which Active Directory refers to as proxyAddresses.
To make sure we search through all accounts for all their email address, we have to modify the input file and also modify our command a bit.
- Prefix the string
smtp:
to be beginning of each address in your file.- For example, if you have address address@domain.edu in your file, modify that line to smtp:address@domain.edu
- Run the following PowerShell command – it’s all one line.
Get-Content C:\scripts\users.txt | %{Get-ADUser -Filter {proxyAddresses -like $_} -Properties *} | ft name, displayName, mail, eduPersonPrimaryAffiliation, PasswordLastSet -Autosize
That output will include the primary email address for each account, so you can validate the results against your input file.
One reply on “Search Active Directory for a list of email addresses”
Thanks, it worked!