I need to generate a report that lists all the Mail Enabled public folders with their associated path (i.e. \IT\OPKBranch\ServiceDesk) and all email addresses associated with that folder. This is what I have and it just gives me a jumbled mess.
$mailenabled = get-publicfolder -Recurse -Resultsize unlimited | select Identity,MailEnabled | where {$_.mailenabled -eq $true}
$emailaddresses = $mailenabled.identity | get-mailpublicfolder | select emailaddresses
$props = @{
'Public Folder Path' = $mailenabled.identity;
'EmailAddresses' = $emailaddresses.emailaddresses
}
$objs = New-Object -TypeName PSObject -Property $props
$objs | format-table -wrap
I’m kind of a self taught noob to PowerShell.
If the email addresses are an array of addresses, I’d recommend making the object look something like this:
Name Alias EmailAddress
---- ----- ------------
\IT\OPKBranch\ServiceDesk ServiceDesk joe@company.com
\IT\OPKBranch\ServiceDesk ServiceDesk sally@company.com
\IT\OPKBranch\ServiceDesk ServiceDesk rob@company.com
\IT\OPKBranch\Operations Operations frank@company.com
\IT\OPKBranch\Operations Operations joe@company.com
\IT\OPKBranch\Operations Operations tammy@company.com
This gives you flexibility to use Powershell to do some basic reporting, like how many users are in each folder:
PS C:\Users\Rob> $test | Group-Object -Property Alias -NoElement
Count Name
----- ----
3 ServiceDesk
3 Operations
or if you simply want to get the email addresses:
PS C:\Users\Rob> $test | Where {$_.Alias -eq 'Operations'} | Select -ExpandProperty EmailAddress
frank@company.com
joe@company.com
tammy@company.com
Assuming that EmailAddresses is returned as an array, you could try an approach like this:
$mailEnabledFolders = Get-PublicFolder -Recurse -Resultsize unlimited | Where {$_.mailenabled -eq $true}
$results = foreach ($folder in $mailEnabledFolders) {
$mailPublicFolder = Get-MailPublicFolder -Identity $folder.Identity
foreach ($emailAddress in $mailPublicFolder.EmailAddresses) {
$mailPublicFolder | Select Name, Alias, @{Name="EmailAddress";Expression={$emailAddress}}
}
}
$results