powershellexchange-server-2016

Is there a command to verify if MAPI is enabled for all users?


We have an organization in our Exchange services (2016) which has well above 200 users.

We need to verify if MAPI is enabled for each of them, and if not, who doesn't have it so we can enable it...

Is there a Powershell/ExchangeShell command which :

Any of those would be of great help, so far I've only found a command in which you search for one user, but I don't want to have to do that for all 200 users...


Solution

  • This is fairly straight forward since most Exchange cmdlets allow piping directly into other Exchange cmdlets.

    List all users, and which APIs or protocols they have enabled:

    Get-CASMailbox -ResultSize unlimited
    

    Possibly more useful to you is a list in CSV format since 200 users is tough to sort through in the PowerShell console. This will list more protocols and features, adjust as needed:

    Get-CASMailbox -ResultSize unlimited  | Select-Object -Property Identity, *Enabled | Export-Csv -NoTypeInformation -Path report.csv
    

    List all users who have MAPI enabled:

    Get-CASMailbox -ResultSize unlimited | where {$_.MapiEnabled -match "true"}
    

    List all users who don't have MAPI enabled and enable it. Remove -WhatIf when ready to run it for real:

    Get-CASMailbox -ResultSize unlimited | where {$_.MapiEnabled -match "False"} | Set-CASMailbox -MAPIEnabled $true -WhatIf
    

    Note, this was run against an Exchange Online organization(where MAPI is enabled by default). You might need to use Get-CASMailbox -OrganizationalUnit <OrgName> or other filters to make sure you're only dealing with the correct mailboxes.