SharePoint Online: busque todos los subsitios con permisos únicos mediante PowerShell
Requisito: Encuentre todos los sitios de SharePoint Online con permisos únicos mediante PowerShell.
¿Cómo comprobar si un sitio (web) utiliza permisos únicos o hereda permisos del padre?
¿Está buscando una forma de comprobar rápidamente si un subsitio de SharePoint Online tiene permisos únicos? ¡PowerShell hace que encontrar todos los sitios con permisos únicos sea muy fácil! Esta publicación de blog le mostrará cómo usar PowerShell para buscar todos los subsitios con permisos únicos.
Para verificar si un sitio tiene permisos incumplidos, siga estos pasos:
- Navegue hasta el Sitio y luego vaya a Configuración del sitio >> Permisos del sitio >> Configuración de permisos avanzados.
La página "Permisos avanzados" le brinda información sobre si el sitio tiene permisos únicos o no. Si el sitio tiene permisos únicos,
aparecerá el texto "Este sitio tiene permisos únicos"; de lo contrario, "Este sitio hereda los permisos de su padre".
SharePoint Online: PowerShell para obtener todas las webs (subsitios) con permisos únicos
Este PowerShell le brinda todos los subsitios de una colección de sitios, que utilizan permisos únicos:
#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"
#Define Parameter values
$SiteURL="https://crescent.sharepoint.com"
#Setup Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
Try {
#Function to check if site has unique permissions
Function Check-SPOWebUniquePermissions($SiteURL)
{
#Set up the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $credentials
$Web = $Ctx.Web
$Ctx.Load($Web)
$Ctx.Load($Web.Webs)
$Ctx.ExecuteQuery()
#Check if the site has unique permissions
$Web.Retrieve("HasUniqueRoleAssignments")
$Ctx.ExecuteQuery()
if ($Web.HasUniqueRoleAssignments -eq $true)
{
Write-Host -f Green "Site '$($Web.URL)' has Unique Permissions"
}
else
{
Write-Host -f Yellow "Site '$($Web.URL)' is inhering Permissions from the Parent"
}
#Process Each subsite in current site
ForEach($Web in $Web.Webs)
{
#call the function recursively
Check-SPOWebUniquePermissions $Web.Url
}
}
#call the function
Check-SPOWebUniquePermissions $SiteURL
}
Catch {
write-host -f Red "Error Checking Unique Permissions!" $_.Exception.Message
}
PnP PowerShell para obtener subsitios con permisos únicos
Auditemos el estado de permiso único de todos los subsitios con la ayuda de PnP PowerShell:
#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
Try {
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
#Get All subsites from the SharePoint Online site collection
$WebsCollection = Get-PnPSubWeb -Recurse -Includes HasUniqueRoleAssignments
#Get Unique Permission status of each subsite
$WebsCollection | Select Title, URL, HasUniqueRoleAssignments
}
catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
