SharePoint Online : rechercher tous les sous-sites dotés d'autorisations uniques à l'aide de PowerShell
Exigence : Recherchez tous les sites SharePoint Online avec des autorisations uniques à l'aide de PowerShell.
Comment vérifier si un site (Web) utilise des autorisations uniques ou hérite des autorisations du parent ?
Cherchez-vous un moyen de vérifier rapidement si un sous-site SharePoint Online dispose d’autorisations uniques ? PowerShell facilite la recherche de tous les sites dotés d'autorisations uniques ! Cet article de blog vous montrera comment utiliser PowerShell pour rechercher tous les sous-sites dotés d'autorisations uniques.
Pour vérifier si un site a des autorisations non autorisées, procédez comme suit :
- Accédez au site, puis accédez à Paramètres du site >> Autorisations du site >> Paramètres d'autorisations avancés.
La page « Autorisations avancées » vous indique si le site dispose ou non d'autorisations uniques. Si le site dispose d'autorisations uniques,
vous obtiendrez le texte "Ce site dispose d'autorisations uniques", sinon "Ce site hérite des autorisations de son parent".
SharePoint Online : PowerShell pour obtenir tous les sites Web (sous-sites) avec des autorisations uniques
Ce PowerShell vous permet d'obtenir tous les sous-sites d'une collection de sites, qui utilisent des autorisations uniques :
#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 pour obtenir des sous-sites avec des autorisations uniques
Vérifions le statut d'autorisation unique de tous les sous-sites à l'aide 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
}
