![](/img/trans.png)
[英]Get items in specific folder in Sharepoint online document library with Powershell PNP
[英]PnP Script to get root folders of a SharePoint online document library and set unique permissions
我们有以下内容:-
我们要运行 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>"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.