Get-Emails from AD

Hello everyone,

need your help,
i have a list with emails(some of this users still in ad some left)
i need find information based on this emails, i need the email associated to user who not in AD still stay in report with error message
my script

$csv = get-content "c:\Email.csv"
$results = foreach($mail in $csv){
    $userMail = $user.mail
    Get-ADUser -Filter {mail -eq $mail} -Properties Name, mail,Description,Title,Manager | Select-Object Name, mail,Description,Title,Manager 

}$results | Export-Csv "c:\Email_Report.csv" -NoTypeInformation

this part working ok, but it removing from report email which not exist in AD, but i need them in report

Thanks.

There are a lot of ways to do things. First, your loop was incorrect. You were using foreach ($mail in $csv) and referencing $userMail as $user.Mail and then your filter as $mail, which would be an object unless you did $mail.Mail.

The updated code will create an object if the user was found or not found in AD. Status was added to quickly identify if finding the user was Successful or Failed, but you could even just use Name to see if is $null to see which failed.

$csv = get-content "c:\Email.csv"

$results = foreach($user in $csv){
    $userMail = $user.mail
    $adUser = Get-ADUser -Filter {mail -eq $userMail} -Properties Name, mail,Description,Title,Manager
               
    if ($adUser) {
        $adUser |
        Select-Object Name, 
                      mail,
                      Description,
                      Title,
                      Manager,
                      @{Status="Status";Expression={"Success"}}
    }
    else {
        New-Object -TypeName PSObject -Property @{
            Name        = $null
            mail        = $userMail
            Description = $null
            Title       = $null
            Manager     = $null
            Status      = "Failed"
        }
    }
}

$results | Export-Csv "c:\Email_Report.csv" -NoTypeInformation

Hi Rob,

Thank you for example, but i get the error:

Get-ADUser : Variable: 'userMail' found in expression: $userMail is not defined.
At line:5 char:15
+ ...   $adUser = Get-ADUser -Filter {mail -eq $userMail} -Properties Name, ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-ADUser], ArgumentException
    + FullyQualifiedErrorId : Variable: 'userMail' found in expression: $userMail is not defined.,Microsoft.ActiveDirectory.Management.Commands.GetADUser
 
Select-Object : The Status key is not valid.
At line:9 char:9

From your first script, I assume that this file is not actually a csv, just a text file with a list of email addresses.

If so remove this line.

$userMail = $user.mail

Change this line.

$results = foreach($userMail in $csv){

Hi Ron,

Thank you again,but still error:

Select-Object : The Status key is not valid.
At line:10 char:9
+         Select-Object Name,
+         ~~~~~~~~~~~~~~~~~~~

and i changed script


$results = foreach($userMail in $csv){
#$userMail = $user.mail
$adUser = Get-ADUser -Filter {mail -eq $userMail} -Properties Name, mail,Description,Title,Manager

Try this.

@{ Name = “Status”; Expression = { “Success” } }

It doesn’t like Status=“Status”

Hi Ron,

Thank you
its still give me error:

Get-ADUser : The search filter cannot be recognized
At line:6 char:15
+ ...   $adUser = Get-ADUser -Filter {mail -eq $userMail} -Properties Name, ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

but this time it create report
Thanks.

Can you show me a sample of the file? Be sure obfuscate any sensitive info.

Ron - Thank you again
i find my problem
i try to read data from csv file, i change it on txt and all work

Thanks again.