繁体   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