What if you want to update the item permissions on every item in a list or library, BUT you don’t want to trigger an associated workflow?
Why?
Request came in to add a new SharePoint group to all the items in a library. Options were to update EVERY item in the library and let the workflow update the permissions, update the items ONE AT A TIME…
OR
Use PowerShell to update item permissions and not stress the server(s).
# add powershell snapin $web = Get-SPWeb -Identity "http://sharepointed.com" $list = $web.Lists.TryGetList("Taco Time") $group = "Taco Makers" $PermissionLevel = "Read" #get site group and setup permission/role $group = $web.Groups[$group] $roleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($group) $roleDefinition = $web.RoleDefinitions[$PermissionLevel]; $roleAssignment.RoleDefinitionBindings.Add($roleDefinition); if ($list -ne $null) { foreach ($item in $list.Items) { if ($item.HasUniqueRoleAssignments -eq $False) { $item.BreakRoleInheritance($True) } if ($web.SiteGroups[$group] -ne $null) { $item.RoleAssignments.Add($roleAssignment) } else { Write-Host "Group is not valid." } } } $web.Dispose()
What about a user instead of a group?
Jen, try this:
$user = “domain\UserAccount”
Then update:
$group = $web.SiteGroups[$group]
to
$group = $web.SiteUsers[$user]