Public/Exchange/Mailbox/Get/Get-ExMailboxProtocol.ps1
|
function Get-ExMailboxProtocol { param ( [Parameter(Mandatory = $false, Position = 0)] [string]$Identity, [Parameter(Mandatory = $false)] [string]$ByDomain, [Parameter(Mandatory = $false)] [switch]$ExportToExcel ) [System.Collections.Generic.List[PSCustomObject]]$exoCasMailboxesArray = @() $tenantSmtpClientAuthenticationDisabled = (Get-TransportConfig).SmtpClientAuthenticationDisabled if ($tenantSmtpClientAuthenticationDisabled) { Write-Host 'SMTP Client Authentication is disabled' -ForegroundColor Green $tenantSmtpClientAuthenticationEnabled = $false } else { Write-Host 'SMTP Client Authentication is enabled' -ForegroundColor Yellow $tenantSmtpClientAuthenticationEnabled = $true } # PropertySets All because by default SMTPClientAuthenticationDisabled is not returned if ($ByDomain) { $casMailboxes = Get-EXOCasMailbox -ResultSize Unlimited -Filter "EmailAddresses -like '*@$ByDomain'" -PropertySets All | Where-Object { $_.PrimarySmtpAddress -like "*@$ByDomain" } } elseif ($Identity) { [System.Collections.Generic.List[PSCustomObject]]$casMailboxes = @() try { $mbx = Get-EXOCasMailbox -Identity $Identity -PropertySets All $casMailboxes.Add($mbx) } catch { Write-Warning "Mailbox not found: $Identity" } } else { $casMailboxes = Get-EXOCasMailbox -ResultSize Unlimited -PropertySets All } <# ECPEnabled : True OWAEnabled : True ImapEnabled : True PopEnabled : True MAPIEnabled : True EwsEnabled : True ActiveSyncEnabled : True #> foreach ($casMailbox in $casMailboxes) { $object = [PSCustomObject][ordered]@{ PrimarySmtpAddress = $casMailbox.PrimarySmtpAddress DisplayName = $casMailbox.DisplayName ExchangeObjectId = $casMailbox.ExchangeObjectId MAPIEnabled = $casMailbox.MAPIEnabled OWAEnabled = $casMailbox.OWAEnabled UniversalOutlookEnabled = $casMailbox.UniversalOutlookEnabled OutlookMobileEnabled = $casMailbox.OutlookMobileEnabled IMAPEnabled = $casMailbox.ImapEnabled POPEnabled = $casMailbox.PopEnabled EwsEnabled = $casMailbox.EwsEnabled ActiveSyncEnabled = $casMailbox.ActiveSyncEnabled # CMDlet returns SMTPClientAuthenticationDisabled but we want SMTPClientAuthenticationEnabled ECPEnabled = $casMailbox.ECPEnabled # we invert the value to provide SMTPClientAuthenticationEnabled because by default the cmdlet returns SMTPClientAuthentication*Disabled* SMTPClientAuthenticationEnabled = if ($null -ne $casMailbox.SMTPClientAuthenticationDisabled) { -not $casMailbox.SMTPClientAuthenticationDisabled }else { '-' } TenantSmtpClientAuthenticationEnabled = $tenantSmtpClientAuthenticationEnabled } $exoCasMailboxesArray.Add($object) } if ($ExportToExcel.IsPresent) { $now = Get-Date -Format 'yyyy-MM-dd_HHmmss' $excelFilePath = "$($env:userprofile)\$now-ExMailboxProtocol.xlsx" Write-Host -ForegroundColor Cyan "Exporting mailbox protocols to Excel file: $excelFilePath" $exoCasMailboxesArray | Export-Excel -Path $excelFilePath -AutoSize -AutoFilter -WorksheetName 'ExchangeMailboxProtocols' Write-Host -ForegroundColor Green "Export completed successfully!" } else { return $exoCasMailboxesArray } } |