SharePoint Online: eliminar permisos únicos de todas las carpetas de una biblioteca de documentos mediante PowerShell
Requisito: Eliminar permisos únicos de todas las carpetas y subcarpetas de una biblioteca de documentos de SharePoint Online.
¿Cómo eliminar permisos únicos de una carpeta en SharePoint Online?
Las bibliotecas de documentos de SharePoint Online suelen tener una estructura jerárquica, donde las carpetas y los archivos heredan sus permisos de la carpeta principal o la biblioteca de documentos. Sin embargo, en algunos casos, se pueden establecer permisos únicos para carpetas específicas, lo que genera niveles de acceso inconsistentes en toda la biblioteca. Administrar permisos únicos para cada carpeta puede ser una tarea tediosa y que requiere mucho tiempo. Entonces, exploremos cómo eliminar permisos únicos de todas las carpetas en una biblioteca de documentos de SharePoint Online usando PowerShell.
En esta publicación de blog, lo guiaremos a través del proceso de eliminar permisos únicos de todas las carpetas en una biblioteca de documentos de SharePoint Online. Esto puede resultar útil si desea restaurar los permisos originales de todas las carpetas de una biblioteca de documentos sin tener que configurar manualmente los permisos para cada carpeta.
Para eliminar permisos únicos de una carpeta de SharePoint Online, siga estos pasos:
- Navegue a su biblioteca de documentos de SharePoint Online, donde se encuentra la carpeta de destino.
- Haga clic derecho en Carpeta y elija "Detalles" en el menú contextual. Esto abre el panel de detalles, haga clic en "Administrar acceso" y luego en los enlaces "Avanzado". Esto lo llevará a la página "Permisos avanzados".
- Si la carpeta usa permisos únicos, obtendrá el mensaje "Esta carpeta tiene permisos únicos". mensaje. Ahora, desde la cinta, haga clic en el botón “Eliminar permisos únicos” y confirme el mensaje: “Está a punto de heredar permisos de la carpeta principal o biblioteca de documentos. Se perderán todos los permisos personalizados”.
Esto elimina todos los permisos únicos de la carpeta y los hereda del objeto principal.
SharePoint Online: PowerShell para eliminar permisos únicos de una carpeta
Aquí está el PowerShell para eliminar permisos únicos en una carpeta en SharePoint Online:
#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"
#Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$FolderServerRelativeUrl= "/Sites/Marketing/Shared Documents/2015"
Try {
#Get Credentials to connect
$Cred= Get-Credential
#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 from URL
$Web = $Ctx.web
$Ctx.Load($Web)
$Ctx.executeQuery()
#Get the Folder object by Server Relative URL
$Folder = $Web.GetFolderByServerRelativeUrl($FolderServerRelativeUrl)
$Ctx.Load($Folder)
$Ctx.ExecuteQuery()
#Reset Folder Permissions
$Folder.ListItemAllFields.ResetRoleInheritance()
$Ctx.ExecuteQuery()
Write-host -f Green "Folder's Unique Permissions are Removed!"
}
Catch {
write-host -f Red "Error Resetting Folder Permissions!" $_.Exception.Message
}
Esto restaurará la herencia predeterminada y garantizará un nivel constante de acceso para todos los usuarios.
PowerShell para eliminar permisos únicos de todas las carpetas de una biblioteca de documentos
Esta vez, eliminemos los permisos únicos de todas las carpetas de una biblioteca.
#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"
#Function to Reset Permissions of all Sub-folders in a Folder
Function Reset-SPOSubFolderPermissions([Microsoft.SharePoint.Client.Folder]$Folder)
{
Try {
#Get all Sub Folders
$Ctx.Load($Folder.Folders)
$Ctx.ExecuteQuery()
#Iterate through each sub-folder of the folder
Foreach ($Folder in $Folder.Folders | Where {$_.Name -ne "Forms" -and $_.Name -ne "Document"})
{
Write-host "Processing Folder:"$Folder.ServerRelativeUrl
#Get the "Has Unique Permissions" Property
$Folder.ListItemAllFields.Retrieve("HasUniqueRoleAssignments")
$Ctx.ExecuteQuery()
If($Folder.ListItemAllFields.HasUniqueRoleAssignments -eq $True)
{
#Reset Folder Permissions
$Folder.ListItemAllFields.ResetRoleInheritance()
$Ctx.ExecuteQuery()
Write-host -f Green "`tFolder's Unique Permissions are Removed!"
}
#Call the function recursively
Reset-SPOSubFolderPermissions $Folder
}
}
Catch {
write-host -f Red "Error Resetting Folder Permissions!" $_.Exception.Message
}
}
#Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$ListName = "Documents"
#Get Credentials to connect
$Cred= Get-Credential
#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 Library
$List = $Ctx.web.Lists.GetByTitle($ListName)
$Ctx.Load($List.RootFolder)
$Ctx.ExecuteQuery()
#call the function to reset permissions of all folders of the document library
Reset-SPOSubFolderPermissions $List.RootFolder
Este puede ser un script útil si necesita restablecer rápidamente los permisos de una gran cantidad de carpetas.
PnP PowerShell para eliminar permisos únicos de una carpeta
Usemos PnP PowerShell para eliminar permisos únicos para una carpeta en SharePoint Online.
#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Marketing"
$FolderURL = "/Documents/2015"
#Connect to the Site
Connect-PnPOnline -URL $SiteURL -Interactive
#Get the Folder - with HasUniqueAssignments and ParentList properties
$Folder = Get-PnPFolder -Url $FolderURL -Includes ListItemAllFields.HasUniqueRoleAssignments, ListItemAllFields.ParentList, ListItemAllFields.ID
#Get the List Item of the Folder
$FolderItem = $Folder.ListItemAllFields
#Check if the Folder has unique permissions
If($FolderItem.HasUniqueRoleAssignments)
{
#Reset permission inheritance
Set-PnPListItemPermission -List $FolderItem.ParentList -Identity $FolderItem.ID -InheritPermissions
Write-host "Unique Permissions are removed from the Folder!"
}
Eliminar permisos únicos de todas las carpetas de una biblioteca de documentos
#Set Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing/2018"
$FolderURL = "/Shared Documents" #Document Library Site Relative URL
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive #-Credentials (Get-Credential)
#Function to reset permissions of all Sub-Folders
Function Reset-SubFolderPermissions($FolderURL)
{
#Get all sub-folders of the Folder - Exclude system folders
$SubFolders = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderURL -ItemType Folder | Where {$_.Name -ne "Forms" -and $_.Name -ne "Document"}
#Loop through each sub-folder
ForEach($SubFolder in $SubFolders)
{
$SubFolderURL = $FolderUrl+"/"+$SubFolder.Name
Write-host -ForegroundColor Green "Processing Folder '$($SubFolder.Name)' at $SubFolderURL"
#Get the Folder Object - with HasUniqueAssignments and ParentList properties
$Folder = Get-PnPFolder -Url $SubFolderURL -Includes ListItemAllFields.HasUniqueRoleAssignments, ListItemAllFields.ParentList, ListItemAllFields.ID
#Get the List Item of the Folder
$FolderItem = $Folder.ListItemAllFields
#Check if the Folder has unique permissions
If($FolderItem.HasUniqueRoleAssignments)
{
#Reset permission inheritance
Set-PnPListItemPermission -List $FolderItem.ParentList -Identity $FolderItem.ID -InheritPermissions
Write-host "`tUnique Permissions are removed from the Folder!"
}
#Call the function recursively
Reset-SubFolderPermissions $SubFolderURL
}
}
#Call the function
Reset-SubFolderPermissions $FolderURL
Terminando
En conclusión, eliminar permisos únicos de todas las carpetas de una biblioteca de documentos de SharePoint Online puede ser una tarea repetitiva y que requiere mucho tiempo. Sin embargo, al utilizar PowerShell, el proceso se puede automatizar, ahorrando tiempo y esfuerzo. Al ejecutar este script, se pueden eliminar los permisos únicos de todas las carpetas de la biblioteca de documentos, restaurando la herencia predeterminada del sitio principal. Esto garantiza un nivel constante de acceso y reduce el riesgo de violaciones de seguridad no deseadas. Siguiendo los pasos descritos en el artículo, los administradores pueden eliminar de forma rápida y eficaz permisos únicos de todas las carpetas de su biblioteca de documentos de SharePoint Online.
Artículos Relacionados:
- SharePoint Online: eliminar permisos únicos para todos los elementos de una lista mediante PowerShell
- SharePoint Online: eliminar permisos únicos y restaurar la herencia en una lista usando PowerShell
- SharePoint Online: eliminar permisos únicos en un subsitio usando PowerShell
- SharePoint Online: eliminar todos los permisos únicos de una colección de sitios mediante PowerShell
