簡體   English   中英

PnP 腳本獲取 SharePoint 在線文檔庫的根文件夾並設置唯一權限

[英]PnP Script to get root folders of a SharePoint online document library and set unique permissions

我們有以下內容:-

  1. 包含大約 1000 個根文件夾的在線文檔庫,

我們要運行 Power Shell 腳本,該腳本僅在 1000 個根文件夾(不包括子文件夾)上運行 >> 然后在根文件夾上設置唯一權限 >> 獲取當前權限組 + 用戶 >> 授予他們只讀權限。

任何人都可以就這樣的腳本提出建議嗎? 謝謝

我有以下內容:-

#Parameters
$SiteURL="https://******.sharepoint.com/"
$FolderSiteRelativeURL = "/Shared Documents/"
 
#Connect to the Site collection
Connect-PnPOnline -URL $SiteURL -UseWebLogin
 
#Get the Folder from site relative URL
$Folder = Get-PnPFolder -Url $FolderSiteRelativeURL
 
#Get all Subfolders of a folder - recursively
$SubFolders = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeURL -ItemType Folder -Recursive

ForEach($SubFolder in $SubFolders)
    {
If($SubFolder.ListItemAllFields.HasUniqueRoleAssignments)
{
    Write-host "Folder is already with broken permissions!" -f Yellow
}
Else
{
    #Break Folder permissions - keep all existing permissions & keep Item level permissions
    $SubFolder.ListItemAllFields.BreakRoleInheritance($True,$True)
    Invoke-PnPQuery
 
    Write-host "Folder's Permission Inheritance is broken!!" -f Green
        /// Need the code which goes here......................   
}
    }

要獲取所有根文件夾,但如何獲取分配給文件夾的權限列表,並將其權限級別設置為讀取而不是編輯、貢獻或完全訪問權限?

謝謝

編輯

我試過這段代碼: -

#Parameters
$SiteURL="https://***.sharepoint.com/"
$FolderSiteRelativeURL = "Shared Documents"
 
#Connect to the Site collection
Connect-PnPOnline -URL $SiteURL -UseWebLogin
 
#Get the Folder from site relative URL
$Folder = Get-PnPFolder -Url $FolderSiteRelativeURL
 
#Get all Subfolders of a folder - recursively
$SubFolders = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeURL -ItemType Folder -Recursive

ForEach($SubFolder in $SubFolders)
    {
If($SubFolder.ListItemAllFields.HasUniqueRoleAssignments)
{
    Write-host "Folder is already with broken permissions!" -f Yellow
}
Else
{
Write-host "Else is running" -f Yellow
    #Break Folder permissions - keep all existing permissions & keep Item level permissions
    $SubFolder.ListItemAllFields.BreakRoleInheritance($True,$True)
    $RoleAssignments = $SubFolder.ListItemAllFields.RoleAssignments
    ForEach($RoleAssignment in $RoleAssignments)
        {
            //extra code should goes here..
        }
 
    Write-host "Folder's Permission Inheritance is broken!!" -f Green   
}
    }

但我收到了這個錯誤:-

集合尚未初始化。 它尚未被請求或請求尚未執行。 可能需要明確要求。 在行:13 字符:9

  • ForEach($RoleAssignment 中的 $RoleAssignment)
  •  ~~~~~~~~~~~~~~~
    • CategoryInfo: OperationStopped: (:) [], CollectionNotInitializedException
    • 完全限定錯誤 ID:Microsoft.SharePoint.Client.CollectionNotInitializedException

請參考以下文章,先從庫中獲取所有根文件夾,然后在里面循環更改用戶的權限。

#Grant folder permissions to SharePoint Group
 Set-PnPfolderPermission -List $ListName -identity $FolderServerRelativeURL -AddRole "Read" -Group "<group name>"

參考: 使用 PowerShell 設置文件夾權限 PowerShell 獲取文件夾權限

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM