How to Check User Access to Mailboxes in Office 365 Using PowerShell

In a modern Office 365 environment, managing user access to various resources is crucial for security and compliance. As an Office 365 administrator, you might need to regularly audit and ensure that users have the appropriate access to mailboxes within your organization. PowerShell provides powerful capabilities to automate such tasks, allowing you to efficiently check user access to mailboxes across your Office 365 tenant.

Recommended Articles

Objective: In this blog post, we’ll demonstrate how to use PowerShell to check if a user has access to any mailbox in an Office 365 tenant. We’ll create a PowerShell script that retrieves mailbox permissions for all mailboxes and filters the results based on a specified user’s email address.

Prerequisites: Before you begin, ensure you have the following:

  • Access to an Office 365 tenant with Exchange Online.
  • PowerShell installed on your local machine.
  • Exchange Online PowerShell module installed.

Step 1: Connecting to Exchange Online PowerShell: First, you need to connect to Exchange Online PowerShell. Open PowerShell and run the following commands:

# Install the Exchange Online module if not already installed
Install-Module -Name ExchangeOnlineManagement

# Connect to Exchange Online
Connect-ExchangeOnline -UserPrincipalName <your-email> -ShowProgress $true

Replace <your-email> with your administrative email address.

Step 2: Creating the PowerShell Script: Now, let’s create the PowerShell script to check user access to mailboxes. Below is the script:

# Specify the email address of the user you want to check
$userEmailAddress = ""

# Function to check if a user has access to a mailbox
function CheckUserMailboxAccess($userEmailAddress) {
    $allMailboxes = Get-Mailbox -ResultSize Unlimited
    $userPermissions = @()

    foreach ($mailbox in $allMailboxes) {
        try {
            $permissions = Get-MailboxPermission -Identity $mailbox.Identity -ErrorAction Stop | Where-Object { $_.User -eq $userEmailAddress }
            if ($permissions) {
                $userPermissions += $permissions
        } catch {
            Write-Host "Error occurred while checking mailbox $($mailbox.Identity): $_"

    if ($userPermissions) {
        Write-Host "User '$userEmailAddress' has access to the following mailboxes:"
        $userPermissions | Select-Object Identity, AccessRights | Export-Csv -Path "UserMailboxAccess.csv" -NoTypeInformation
    } else {
        Write-Host "User '$userEmailAddress' does not have access to any mailboxes."

# Check user mailbox access
CheckUserMailboxAccess $userEmailAddress

Step 3: Running the Script: Save the script to a file with a .ps1 extension (e.g., CheckMailboxAccess.ps1). Open PowerShell, navigate to the directory containing the script, and run it.

Conclusion: In this blog post, we’ve learned how to use PowerShell to check if a user has access to any mailbox in an Office 365 tenant. By leveraging PowerShell’s capabilities, administrators can efficiently manage user access to mailboxes, ensuring security and compliance within the organization.

We encourage you to explore further PowerShell automation possibilities to streamline administrative tasks in your Office 365 environment.

Did you find us helpful?

Support us on PatreonFollow us on Facebook& subscribe on YouTube.

Harish Kumar

As a founder of the PcMac YouTube channel and website, Our goal is to provide Free Technical help to people and spread knowledge to everyone.
0 0 votes
Article Rating
Notify of
Inline Feedbacks
View all comments