$LogTime = Get-Date -Format yyyy-MM-dd_hh-mm
$LogFile = ".\UserPermissionsDetailsPatch-$LogTime.rtf"
# Add SharePoint PowerShell Snapin
if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null ) {
Add-PSSnapin Microsoft.SharePoint.Powershell
}
$scriptBase = split-path $SCRIPT:MyInvocation.MyCommand.Path -parent
Set-Location $scriptBase
#Deleting any .rtf files in the scriptbase location
$FindRTFFile = Get-ChildItem $scriptBase\*.* -include *.rtf
if($FindRTFFile)
{
foreach($file in $FindRTFFile)
{
remove-item $file
}
}
start-transcript $logfile
$siteCollection = read-host "Enter the site collection URL "
$site = get-spsite $siteCollection
foreach($web in $site.allwebs)
{
$users = get-spuser -web $web.url -Limit ALL
foreach($user in $users)
{
write-host $User.userlogin
$permissionInfo = $web.GetUserEffectivePermissionInfo($User.userLogin)
$roles = $permissionInfo.RoleAssignments
write-host "Now checking the permissions of the user " $User.userLogin " in the site " $web.Url -fore yellow
for ($i = 0; $i -lt $roles.Count; $i++)
{
$bRoles = $roles[$i].RoleDefinitionBindings
foreach ($roleDefinition in $bRoles)
{
if ($roles[$i].Member.ToString().Contains('\'))
{
write-host "The User " $user.userLogin " has direct permissions " $roleDefinition.Name -fore green
}
else
{
write-host "The User " $user.userLogin " has permissions " $roleDefinition.Name " given via " $roles[$i].Member.ToString() -fore green
}
}
}
}
}This PowerShell script to list out SharePoint site permission details.
