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()