当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] SharePoint Online:使用 PowerShell 删除文档库中所有文件夹的唯一权限

作者:精品下载站 日期:2024-12-14 21:15:04 浏览:15 分类:玩电脑

SharePoint Online:使用 PowerShell 删除文档库中所有文件夹的唯一权限


要求:从 SharePoint Online 文档库中的所有文件夹-子文件夹中删除唯一权限。

如何删除 SharePoint Online 中文件夹的唯一权限?

SharePoint Online 文档库通常具有层次结构,其中文件夹和文件从父文件夹或文档库继承其权限。但是,在某些情况下,可能会为特定文件夹设置唯一权限,从而导致整个库的访问级别不一致。管理每个文件夹的唯一权限可能是一项耗时且乏味的任务。因此,让我们探讨如何使用 PowerShell 从 SharePoint Online 文档库中的所有文件夹中删除唯一权限。

在这篇博文中,我们将引导您完成从 SharePoint Online 文档库中的所有文件夹中删除唯一权限的过程。如果您想要恢复文档库所有文件夹的原始权限,而无需手动设置每个文件夹的权限,这会很有用。

要从 SharePoint Online 文件夹中删除唯一权限,请执行以下步骤:

  1. 导航到目标文件夹所在的 SharePoint Online 文档库。
  2. 右键单击文件夹,然后从上下文菜单中选择“详细信息”。这将打开详细信息窗格,单击“管理访问”,然后单击“高级”链接。这将带您进入“高级权限”页面。
  3. 如果该文件夹使用唯一权限,您将收到“此文件夹具有唯一权限”。信息。现在,从功能区中单击“删除唯一权限”按钮并确认提示:“您将从父文件夹或文档库继承权限。任何自定义权限都将丢失。”
  4. 这将删除文件夹的所有唯一权限并从父对象继承。

    [玩转系统] SharePoint Online:使用 PowerShell 删除文档库中所有文件夹的唯一权限

SharePoint Online:PowerShell 删除文件夹的唯一权限

以下是用于删除 SharePoint Online 中文件夹的唯一权限的 PowerShell:


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\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
}

这将恢复默认继承并确保所有用户具有一致的访问级别。

PowerShell 删除文档库中所有文件夹的唯一权限

这次,我们删除库中所有文件夹的唯一权限。


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\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

如果您需要快速重置大量文件夹的权限,这可能是一个方便的脚本。

PnP PowerShell 删除文件夹的唯一权限

让我们使用 PnP PowerShell 删除 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!"
}

删除文档库中所有文件夹的唯一权限


#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

包起来

总之,从 SharePoint Online 文档库中的所有文件夹中删除唯一权限可能是一项耗时且重复的任务。然而,通过使用 PowerShell,该过程可以自动化,从而节省时间和精力。通过执行此脚本,可以删除文档库中所有文件夹的唯一权限,恢复从父站点的默认继承。这可确保一致的访问级别并降低意外安全漏洞的风险。通过执行本文中概述的步骤,管理员可以快速有效地从其 SharePoint Online 文档库中的所有文件夹中删除唯一权限。

相关文章:

  • SharePoint Online:使用 PowerShell 删除列表中所有项目的唯一权限
  • SharePoint Online:使用 PowerShell 删除列表中的唯一权限并恢复继承
  • SharePoint Online:使用 PowerShell 删除子网站中的唯一权限
  • SharePoint Online:使用 PowerShell 从网站集中删除所有唯一权限

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯