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 }