![](/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.