Skip to content

Array Definition and For Each Loops

Array Definition:

$aliases = @(
    "user1"
    "user2"
    "user3"
    "user4"
)

ForEach Loop:

$results = foreach ($currentAlias in $aliases) {
    Get-Mailbox -Identity $currentAlias |
        Select-Object DisplayName, Alias, PrimarySmtpAddress, UserPrincipalName, Database
}

Display/Export the results:

$results | Format-Table -AutoSize
# or
$results | Export-Csv .\mailboxes.csv -NoTypeInformation

Using try/catch error handling:

$aliases = @(
    "user1"
    "user2"
    "user3"
    "user4"
)

$results = foreach ($currentAlias in $aliases) {
    try {
        Get-Mailbox -Identity $currentAlias -ErrorAction Stop |
            Select-Object DisplayName, Alias, PrimarySmtpAddress, UserPrincipalName, Database
    }
    catch {
        [PSCustomObject]@{
            DisplayName        = $null
            Alias              = $currentAlias
            PrimarySmtpAddress = $null
            UserPrincipalName  = $null
            Database           = "ERROR: $($_.Exception.Message)"
        }
    }
}
$results | Where-Object Database -like "ERROR*" 
$results | Export-Csv .\mailbox-report.csv -NoTypeInformation