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