Manage Web Part Permissions using PowerShell

 

PowerShell script to manage permissions of web parts in Web Part gallery.

# Get Web Object

$web = Get-SPWeb "Web URL"

# Get Web Part Gallery list

# SPListTemplateType.WebPartCatalog Enum value 113

$list = $web.GetCatalog(113)

$listItemCollections = $list.GetItems()

$listItemCollections | ForEach-Object {

$item = $listItemCollections | Where-Object {$_.Name -match "ContentQuery.webpart"}

}

$item.BreakRoleInheritance($true)

# Remove existing group permission

$group = $web.SiteGroups["Viewers"]

$item.RoleAssignments.Remove($group)

# Add user permission to the web part item

$account = $web.EnsureUser("domain\user")

$role = $web.RoleDefinitions["Contribute"]

$assignment = New-Object Microsoft.SharePoint.SPRoleAssignment($account)

$assignment.RoleDefinitionBindings.Add($role)

$item.RoleAssignments.Add($assignment)

$item.Update()