Powershell Script to List out SharePoint Site Permission Details

  1. $LogTime = Get-Date -Format yyyy-MM-dd_hh-mm  
  2. $LogFile = ".\UserPermissionsDetailsPatch-$LogTime.rtf"  
  3.  
  4. # Add SharePoint PowerShell Snapin  
  5.   
  6.   
  7. if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null ) {  
  8.     Add-PSSnapin Microsoft.SharePoint.Powershell  
  9. }  
  10.   
  11. $scriptBase = split-path $SCRIPT:MyInvocation.MyCommand.Path -parent  
  12. Set-Location $scriptBase  
  13.  
  14. #Deleting any .rtf files in the scriptbase location  
  15. $FindRTFFile = Get-ChildItem $scriptBase\*.* -include *.rtf  
  16. if($FindRTFFile)  
  17. {  
  18.   foreach($file in $FindRTFFile)  
  19.   {  
  20.    remove-item $file  
  21.   }  
  22. }  
  23.   
  24. start-transcript $logfile  
  25.   
  26. $siteCollection = read-host "Enter the site collection URL "  
  27. $site = get-spsite $siteCollection  
  28. foreach($web in $site.allwebs)  
  29.   {  
  30.       $users = get-spuser -web $web.url -Limit ALL  
  31.       foreach($user in $users)  
  32.       {  
  33.           write-host $User.userlogin  
  34.           $permissionInfo = $web.GetUserEffectivePermissionInfo($User.userLogin)  
  35.           $roles = $permissionInfo.RoleAssignments  
  36.           write-host "Now checking the permissions of the user "  $User.userLogin " in the site " $web.Url -fore yellow  
  37.           for ($i = 0; $i -lt $roles.Count; $i++)  
  38.           {  
  39.               $bRoles = $roles[$i].RoleDefinitionBindings  
  40.               foreach ($roleDefinition in $bRoles)  
  41.               {  
  42.                   if ($roles[$i].Member.ToString().Contains('\'))  
  43.                   {  
  44.                       write-host "The User "  $user.userLogin  " has direct permissions "  $roleDefinition.Name -fore green  
  45.                   }  
  46.                   else  
  47.                   {  
  48.                       write-host "The User "  $user.userLogin  " has permissions "  $roleDefinition.Name  " given via "  $roles[$i].Member.ToString() -fore green  
  49.                   }  
  50.               }    
  51.           }    
  52.       }    
  53.   }