private775 icon

SharePoint library check permission levels

private775 | PRO | 04/01/15 06:28:41 PM UTC | 0 ⭐ | 715 👁️ | Never ⏰ | []
PowerShell |

1.28 KB

|

None

|

0 👍

/

0 👎

function checkFolderPremissions($fld){
    if($fld.Item -ne $null -and $fld.Item.HasUniqueRoleAssignments ){
        Write-Host "D:$($fld.ServerRelativeUrl)"
        showRights($fld)
    }
    if($fld.Files.Count -gt 0){
        foreach($f in $fld.Files){
            checkFilePremissions $f
        }
    }
    if($fld.SubFolders.Count -gt 0){
        foreach($d in $fld.SubFolders){
            checkFolderPremissions $d
        }
    }
}
 
function checkFilePremissions($fil){
    if($fil.Item -ne $null -and $fil.Item.HasUniqueRoleAssignments ){
        Write-Host "F:$($fil.ServerRelativeUrl)"
    }
}
 
function showRights($fld){
    $dict = New-Object 'system.collections.generic.dictionary[[string],[system.collections.generic.list[string]]]'
    foreach($ra in $fld.Item.RoleAssignments){
        foreach($rdb in $ra.RoleDefinitionBindings){
            if(-not $dict.ContainsKey($rdb.Name)){
                $ll = new-object 'system.collections.generic.list[string]'
                $dict.Add($rdb.Name, $ll)
            }
            $ll = $dict[$rdb.Name]
            if(-not $ll.Contains($ra.Member.Name)){
                $ll.Add($ra.Member.Name)
            }
        }
    }
    $dict
}
 
$w = Get-SPWeb http://xxxxxx.com/sites/Policies
$lists = @( "KEMH", "MWI")
 
foreach($list in $lists){
    $l = $w.Lists.TryGetList($list)
 
    if($l -eq $null){
        throw "List not found: $($list)"
    }
 
 
    $rf = $l.RootFolder
    checkFolderPremissions $rf
}

Comments