SharePoint Online:使用 PowerShell 查找具有唯一权限的所有子网站
要求:使用 PowerShell 查找具有唯一权限的所有 SharePoint Online 网站。
如何检查网站(网站)是否使用独特权限或继承父级权限?
您是否正在寻找一种快速检查 SharePoint Online 子网站是否具有唯一权限的方法? PowerShell 使查找具有唯一权限的所有站点变得轻而易举!这篇博文将向您展示如何使用 PowerShell 查找具有唯一权限的所有子网站。
要检查站点是否存在权限问题,请按照下列步骤操作:
- 导航到站点,然后转至站点设置 >> 站点权限 >> 高级权限设置。
“高级权限”页面为您提供有关该网站是否具有唯一权限的信息。如果该网站具有独特的权限,
您将收到文本“此网站具有独特的权限”,否则“此网站从其父网站继承权限”。
SharePoint Online:PowerShell 获取具有唯一权限的所有网站(子网站)
此 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"
#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 获取具有独特权限的子站点
让我们借助 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
}
