# get-sendaspermission # # Only direct SendAs for USers. No Group support # run in Exhcange PowerShell param ( [string]$exportfile = ".\sendaspermission.csv" , [string]$resultsize = "unlimited" # set to unlimited ) Write-Host "Export-SendAsPermission: Start" # -- delete existing file Remove-Item $exportfile -ErrorAction SilentlyContinue # --- Load mailboxes Write-Host "Load $($resultsize) Mailboxes from Exchange..." $Mailboxes = Get-Mailbox -ResultSize $resultsize | Select-Object DistinguishedName,PrimarySmtpAddress,Name Write-Host "Total Mailboxes: $($Mailboxes.count)" Write-Host "Load $($resultsize) RemoteMailboxes from Exchange..." $RemoteMailboxes = Get-RemoteMailbox -ResultSize $resultsize | Select-Object DistinguishedName,PrimarySmtpAddress,Name Write-Host "Total RemoteMailboxes: $($RemoteMailboxes.count)" Write-host "Merge Maiboxes/RemoteMailboxes" $Totalmailboxes = $Mailboxes + $RemoteMailboxes Write-Host "Total Items to process: $($TotalMailboxes.count)" # --- Process mailbox/remotemailbox $count = 0 ForEach ($Mailbox in $Totalmailboxes) { $count = $count + 1 write-host "( $($count)/$($TotalMailboxes.Count)) Mailbox $($Mailbox.PrimarySmtpAddress)" $result = [pscustomobject][ordered]@{ MailboxEmail = $Mailbox.PrimarySmtpAddress MailboxName = $Mailbox.Name SendAsUser = "" SendAsUserMail = "" } $Delegates = @() $Delegates = Get-ADPermission -identity $Mailbox.DistinguishedName ` | Where-Object {($_.ExtendedRights -like "*send-as*")} If ($null -eq $Delegates) { write-host " No SendAs Permission" } else { write-host " Parsing SendAs Permission" ForEach ($Delegate in $Delegates) { write-host " Delegate $($Delegate.identity)" $CheckDelegate = Get-Recipient $Delegate.User.RawIdentity -ErrorAction SilentlyContinue If ($null -eq $CheckDelegate) { Write-host " Skip - No Mailbox" } elseif ($CheckDelegate.distinguishedname -eq $Mailbox.DistinguishedName) { write-host " Skip Self" } else { If (($CheckDelegate.RecipientType -like "Mail*") ` -or $CheckDelegate.RecipientType -like "*Mailbox") { $result.SendAsUser = $CheckDelegate.Name $result.SendAsUserMail = $CheckDelegate.PrimarySmtpAddress write-host " Export Line" -ForegroundColor Green $result | export-csv $exportfile -append -NoTypeInformation } } } } } Write-Host "Export-SendAsPermission: End"