logo exchange

Overzicht mailbox rechten

Wie heeft rechten op welke (gedeelde) mailbox?

Voor Exchange Server

# Add Exchange snap-in if not already loaded
if (!(Get-PSSnapin | Where-Object { $_.Name -eq "Microsoft.Exchange.Management.PowerShell.SnapIn" })) {
    Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
}

# Get all user mailboxes
$mailboxes = Get-Mailbox -ResultSize Unlimited

# Create an empty array to store results
$results = @()

foreach ($mailbox in $mailboxes) {
    $mailboxPermissions = Get-MailboxPermission -Identity $mailbox.Identity

    # Loop through all permissions for each mailbox
    foreach ($permission in $mailboxPermissions) {
        $result = New-Object PSObject -Property @{
            "Mailbox" = $mailbox.DisplayName
            "User" = $permission.User
            "AccessRights" = $permission.AccessRights
        }
        $results += $result
    }
}

# Output results to a log file
$results | Format-Table -AutoSize | Out-File -FilePath "C:\beheer\mailboxrights.log"

Voor Exchange Online

# Connect to Exchange Online PowerShell
# Ensure you have the required permissions to run this script
# Install the necessary modules if not already installed
# Install-Module -Name ExchangeOnlineManagement

# Authenticate to Exchange Online
Connect-ExchangeOnline -UserPrincipalName yourAdminUPN@yourdomain.com -ShowProgress $true

# Get all mailboxes
$mailboxes = Get-Mailbox -ResultSize Unlimited

# Create an empty array to store results
$results = @()

foreach ($mailbox in $mailboxes) {
    $mailboxPermissions = Get-MailboxPermission -Identity $mailbox.Identity

    # Loop through all permissions for each mailbox
    foreach ($permission in $mailboxPermissions) {
        $result = New-Object PSObject -Property @{
            "Mailbox" = $mailbox.DisplayName
            "User" = $permission.User
            "AccessRights" = $permission.AccessRights
        }
        $results += $result
    }
}

# Output results to a log file
$results | Format-Table -AutoSize | Out-File -FilePath "C:\beheer\mailboxrights_online.log"

# Disconnect from Exchange Online session
Disconnect-ExchangeOnline -Confirm:$false