Búsqueda de sitios web

SharePoint Online: eliminar permisos únicos en un subsitio usando PowerShell


Requisito: Eliminar permisos únicos de un subsitio en SharePoint Online mediante PowerShell.

¿Cómo eliminar permisos únicos de un sitio de SharePoint Online?

Una de las características de SharePoint Online es la capacidad de asignar permisos únicos a documentos o carpetas individuales. Esto permite un control detallado sobre quién puede acceder, editar o eliminar elementos específicos dentro del sitio. Sin embargo, esto también significa que rápidamente puede volverse complejo y difícil de gestionar, especialmente para las grandes organizaciones. En este artículo, exploraremos cómo eliminar permisos únicos en SharePoint Online.

La eliminación de permisos únicos y la restauración de la herencia de permisos para un subsitio permite que su seguridad se administre en el nivel del sitio principal en lugar de administrar la seguridad por separado de ese subsitio. Para restaurar la herencia de permisos para un subsitio en SharePoint Online, haga lo siguiente:

  1. Inicie sesión en SharePoint Online, navegue hasta el subsitio al que desea eliminar permisos únicos.
  2. Haga clic en el engranaje de Configuración >> Configuración del sitio >> Haga clic en el enlace "Permisos del sitio".
  3. En la cinta, haga clic en la pestaña Permisos y luego, en el grupo Herencia, haga clic en Eliminar permisos únicos. Confirme el mensaje con Aceptar.

Esto elimina permisos únicos del subsitio de SharePoint Online. Tenga en cuenta que cuando elimine permisos únicos, todos los permisos personalizados se perderán y no podrán restaurarse.

Eliminar permisos únicos de un subsitio en SharePoint Online usando PowerShell

A continuación se explica cómo eliminar permisos únicos en el subsitio de SharePoint Online con PowerShell:


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#Config Parameters
$SiteURL= "https://crescent.sharepoint.com/sites/marketing/2018"

#Get Credentials to connect
$Cred = Get-Credential

Try {
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
    
    #Get the Web
    $Web = $Ctx.Web
    $Ctx.Load($Web)
    $Ctx.ExecuteQuery()

    #Check if the given subsite is using unique permissions
    $Web.Retrieve("HasUniqueRoleAssignments")
    $Ctx.ExecuteQuery()

    #Reset broken inheritance
    If($Web.HasUniqueRoleAssignments)
    {
        #delete unique permissions of a subsite in sharepoint online powershell
        $Web.ResetRoleInheritance()
        $Web.Update()
        $Ctx.ExecuteQuery()    
        Write-host -f Green "Unique Permissions Removed from the Site!"
    }
    Else
    {
        Write-host -f Yellow "Site is Already Inheriting Permissions from the Parent!"
    }
}
Catch {
    write-host -f Red "Error:" $_.Exception.Message
}

Tras la ejecución, los permisos únicos se eliminarán y el sitio heredará sus permisos del sitio principal.

PnP PowerShell para restablecer la herencia de permisos en el subsitio de SharePoint Online

Veamos cómo restablecer los permisos del subsitio en SharePoint Online usando PnP PowerShell. Este procedimiento restaurará los permisos de un subsitio con el mismo permiso que su sitio principal.


#Config Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing/2018"
 
#Connect PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)
 
#Get the web
$Web = Get-PnPWeb

#Remove unique permissions
$Web.ResetRoleInheritance()
Invoke-PnPQuery

¿Qué tal si eliminamos permisos únicos para todos los subsitios de una colección de sitios?


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Retail"

Try {
    #Connect to SharePoint Online site
    Connect-PnPOnline -Url $SiteURL -Interactive

    #Get all subsites in SharePoint Online site using PnP PowerShell
    $WebsCollection = Get-PnPSubWeb -Recurse
 
    #Iterate through each subsite
    ForEach($Web in $WebsCollection)
    {
        #Check if web is using unique permissions
        $HasUniquePermissions =  $Web.retrieve("HasUniqueRoleAssignments")
        Invoke-PnPQuery
        
        If($Web.HasUniqueRoleAssignments)
        {
            #Remove unique permissions
            $Web.ResetRoleInheritance()
            Invoke-PnPQuery
            Write-Host "Unique Permissions Reset for $($Web.ServerRelativeURL)" -f Green
        }
    }
}
Catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

En resumen, eliminar permisos únicos de un subsitio en SharePoint Online es un proceso sencillo. Si sigue los pasos descritos en este artículo, podrá volver rápida y fácilmente a los permisos predeterminados establecidos para el sitio. Puede llegar un momento en el que sea necesario eliminar estos permisos, ya sea por motivos de seguridad o para simplificar la estructura de permisos del sitio, lo que se puede hacer mediante el uso de PowerShell.

Artículos relacionados