I am trying to get a list of all users in AD that have an email (mail attribute). I have this command
Get-AdUser -filter * -Properties mail | Select SAMAccountName, mail | Export-CSV -Path $userPath -NoTypeInformation
The problem is that I do not know how to limit or filter out users where the email is null/blank. I do not care how complex the script is as it will be part of a much larger powershell script. If the solution is to loop through the CSV that is an option but would prefer something quicker. Does anyone know how to do this?
Try this:
Get-ADUser -Properties mail -Filter {mail -like '*'}
Try this:
Get-ADUser -Properties mail | where {$_.mail -ne $null} | Select SAMAccountName, mail | Export-CSV -Path $userPath -NoTypeInformation
The question has already be answered, but for me, the simplest is to rely on LDAP filter syntax. For instance:
Get-ADUser -LDAPFilter "(mail=*)"
The "=*" is a standard LDAP operator:
* (wildcard)
You use the wildcard operator to represent a value that could be equal to anything. One such situation might be if you wanted to find all objects that have a value for title. e for title. You would then use:
(title=*)
Source LDAP Query Basics