A little script to check for the NT AUTHORITYSELF full access right on mailboxes

In case someone is looking for a script that works with mailbox permissions like this, here’s a small example of what I came up with to help someone check that all mailboxes have the SELF right in the permissions:

#Script to check mailboxes for fullaccess rights for NT AUTHORITYSELF
#Written by jtedoff@microsoft.com 4/21/2012


$logfile = “c:selfrightstest.log”
if (test-path $logfile) {remove-item $logfile}

function WriteLog
{
 PARAM($msg)
 END
 {
 Add-Content -Path $logfile -encoding ASCII -value $msg
 }
}

#Modify the next line to narrow the scope of the Get-Mailbox results
#For example, set it to -> $mailboxes = Get-Mailbox -server <servername> -resultsize unlimited <- to only check mailboxes on a particular server

$mailboxes = Get-ExchangeServer | ?{$_.ServerRole -like “*mailbox*”} | Get-Mailbox -resultsize unlimited

WriteLog “Checking for FullAccess rights for NT AUTHORITYSELF”

$mailboxes | foreach {
 $perms = get-mailboxpermission $_.identity | ?{$_.user -like “NT AUTHORITYSELF” -and $_.accessrights -like “*fullaccess*”}
 if ($perms) {
  Write-Host “Mailbox for $_” -nonewline
  Write-Host ” OK” -foregroundcolor green

   }
 else { $erruser = $_.Identity
  Write-Host “FullAccess right for NT AUTHORITYSELF not detected on the mailbox for ” -foregroundcolor red -nonewline
  Write-Host $_.Identity -foregroundcolor red -backgroundcolor white
  WriteLog “FullAccess right for NT AUTHORITYSELF not detected on the mailbox for $erruser”
  }
 }

Here’s an output example where one user doesn’t in fact have SELF rights over their mailbox: