private775 icon

SharePoint library replace permission levels

private775 | PRO | 04/01/15 07:20:18 PM UTC | 0 ⭐ | 730 👁️ | Never ⏰ | []
PowerShell |

1.07 KB

|

None

|

0 👍

/

0 👎

function replacePremissions($fld){
    if($fld.Item -ne $null -and $fld.Item.HasUniqueRoleAssignments ){
        Write-Host "D:$($fld.ServerRelativeUrl)"
        updatePremissionsNotDelete($fld.Item)
    }
    if($fld.SubFolders.Count -gt 0){
        foreach($d in $fld.SubFolders){
            replacePremissions $d
        }
    }
}
 
function updatePremissionsNotDelete($itm){
    $perms2replace = @("Full Control", "Contribute")
    $permReplaceWith = "Contribute not Delete"
    $rdNew = $w.RoleDefinitions|?{$_.Name -eq $permReplaceWith }
    foreach($rdName in $perms2replace){
        $rd = $w.RoleDefinitions|?{$_.Name -eq $rdName }
        foreach($ra in $itm.RoleAssignments){
            if($ra.RoleDefinitionBindings.Contains($rd)){
                $ra.RoleDefinitionBindings.Remove($rd)
                $ra.RoleDefinitionBindings.Add($rdNew)
            }
            $ra.Update()
        }
    }
}
 
$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)"
    }
 
    updatePremissionsNotDelete $l
    $rf = $l.RootFolder
    replacePremissions $rf
}

Comments