Romper la herencia de permisos y agregar o quitar usuarios a la lista de SharePoint usando PowerShell
De forma predeterminada, las listas y bibliotecas de SharePoint heredan permisos de su sitio principal cuando se crean. Hay ocasiones en las que es posible que desee implementar permisos únicos en un nivel de lista de SharePoint. Por ejemplo, si hay usuarios que deben acceder sólo a una lista específica en un sitio de SharePoint pero no a ningún otro objeto. Por lo tanto, para configurar un permiso único en un sitio, lista, biblioteca, carpeta o elemento de SharePoint, primero debemos romper la herencia de permisos. Simplemente sigue estos pasos:
- Navegue hasta su lista o biblioteca de SharePoint de destino
- Haga clic en Configuración de lista >> y luego en Permisos para esta lista.
Desde la cinta, haga clic en el icono "Detener la herencia de permisos" como se muestra en la imagen de abajo. ¡Romper la herencia de permisos no elimina todos los permisos existentes inmediatamente! Se aplica una copia de los permisos de los padres al objeto secundario (como Lista/elemento) antes de que se rompan los permisos.
- Elimine los usuarios o grupos que necesitan tener acceso a esta lista.
- Otorgue permisos a usuarios y grupos adicionales que necesiten tener acceso a esta lista.
SharePoint PowerShell para romper la herencia de permisos:
Para romper la herencia de permisos en un sitio o lista de SharePoint, use este script de PowerShell.
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Configuration Parameters
$WebURL="https://intranet.crescent.com"
$ListName="Contacts"
$CopyParentPermissions = $True
#Get the List
$Web = Get-SPWeb $WebURL
$List = $web.Lists.TryGetList($ListName)
If ($List -ne $null)
{
if ($List.HasUniqueRoleAssignments -eq $False)
{
$List.BreakRoleInheritance($CopyParentPermissions)
Write-host "Stopped Inheriting Permissions from the parent." -f Green
}
else
{
write-host "List is already using Unique Permissions!" -f Red
}
}
Para eliminar todos los permisos ya heredados de la lista, establezca la variable $CopyParentPermissions en $False.
Agregar permiso a la lista de SharePoint usando PowerShell:
Una vez que se eliminan los permisos de sus padres, podemos agregar o eliminar usuarios a la lista usando PowerShell. Utilice este PowerShell en SharePoint para agregar permisos a una lista.
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Configuration Parameters
$WebURL="https://intranet.crescent.com"
$ListName="Contacts"
#Get the List
$Web = Get-SPWeb $WebURL
$List = $web.Lists.TryGetList($ListName)
If ($List -ne $null)
{
#Grant contribute Permission to a User account
$UserAccount="Crescent\Omar"
$User = $web.EnsureUser($UserAccount)
$RoleDefinition = $Web.RoleDefinitions["Contribute"]
$RoleAssignment = New-Object Microsoft.SharePoint.SPRoleAssignment($User)
$RoleAssignment.RoleDefinitionBindings.Add($RoleDefinition)
$List.RoleAssignments.Add($RoleAssignment)
$List.Update()
Write-host "Permissions Granted to User Account: $UserAccount" -f Green
#Grant Read access to the Members SharePoint Group
$GroupName="Crescent Intranet Members"
$Group = $Web.SiteGroups[$GroupName]
$RoleDefinition = $Web.RoleDefinitions["Read"]
$RoleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($Group)
$RoleAssignment.RoleDefinitionBindings.Add($RoleDefinition);
$List.RoleAssignments.Add($RoleAssignment)
$List.Update()
Write-host "Permissions Granted to SharePoint Group: $GroupName" -f Green
}
¿Qué tal si eliminamos permisos de la lista de SharePoint usando PowerShell?
Asegúrese de haber roto la herencia de permisos antes de ejecutar este script.
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Configuration Parameters
$WebURL="https://intranet.crescent.com"
$ListName="Contacts"
#Get the List
$Web = Get-SPWeb $WebURL
$List = $web.Lists.TryGetList($ListName)
If ($List -ne $null)
{
#Remove User Permissions from the List
$UserAccount="Crescent\Omar"
$User = $web.EnsureUser($UserAccount)
$List.RoleAssignments.Remove($User)
$List.Update()
Write-host "Permissions Removed from the User Account: $UserAccount" -f Green
#Revoke permission from a SharePoint Group
$GroupName="Crescent Intranet Members"
$Group = $Web.SiteGroups[$GroupName]
$List.RoleAssignments.Remove($Group)
$List.Update()
Write-host "Permissions Revoked from SharePoint Group: $GroupName" -f Green
}
PowerShell para eliminar todos los permisos de una lista:
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Configuration Parameters
$WebURL="https://intranet.crescent.com"
$ListName="Contacts"
#Get the List
$Web = Get-SPWeb $WebURL
$List = $web.Lists.TryGetList($ListName)
If ($List -ne $null)
{
#Get All permissions applied to List
$RoleAssignmentCount = $List.RoleAssignments.Count
#Remove All Permissions from the List
For ($i= $RoleAssignmentCount-1; $i -ge 0; $i--)
{
Write-host "Removing Permission from:"$List.RoleAssignments[$i].Member.name
$List.RoleAssignments.Remove($i)
}
}
