用于设置文档库中的文件夹权限的 PnP PowerShell 脚本

问题描述 投票:0回答:1

我正在尝试获取 SharePoint Online 文档库中的所有文件夹和子文件夹。我想检查它们是否有子文件夹。如果他们这样做,我不想将会员和访客的权限更改为“阅读”。

我是 PnP 新手,尝试过这个脚本:

Connect-PnPOnline -Url https://mysharepoint.sharepoint.com/sites/mysite -UseWebLogin

$folders = Get-PnPFolder -Includes ListItemAllFields -Url "/sites/mysite/my document library" | Where-Object { $_.ListItemAllFields.FSObjType -eq 0 }

foreach ($folder in $folders) {
    Get-PnPListItemPermission -List "my document library" -Identity $folder.ListItemAllFields.Id

    Set-PnPListItemPermission -List "my document library" -Identity $folder.ListItemAllFields.Id -User "Members" -AddRole "Read"

    Set-PnPListItemPermission -List "my document library" -Identity $folder.ListItemAllFields.Id -User "Visitors" -AddRole "Read"
}

Disconnect-PnPOnline

不幸的是,$folders 变量是空的,尽管它不应该是空的。因此,我的文件夹的权限不会更改。我也不知道该脚本是否仅适用于“/sites/mysite/my document library”中的文件夹并忽略子文件夹及其子文件夹。

我感谢任何有关如何解决此问题的帮助或来源。谢谢!

powershell sharepoint-online
1个回答
0
投票

您可以使用 ListItemAllFields.FSObjType eq 1 条件检查文件夹或子文件夹。

这是根据您的要求修改的脚本。

Connect-PnPOnline -Url https://mysharepoint.sharepoint.com/sites/mysite -UseWebLogin

function Set-FolderPermissions($folder) {
    Get-PnPListItemPermission -List "my document library" -Identity $folder.ListItemAllFields.Id

    Set-PnPListItemPermission -List "my document library" -Identity $folder.ListItemAllFields.Id -User "Members" -AddRole "Read"

    Set-PnPListItemPermission -List "my document library" -Identity $folder.ListItemAllFields.Id -User "Visitors" -AddRole "Read"

    $subfolders = Get-PnPFolder -Includes ListItemAllFields -FolderSiteRelativeUrl $folder.ServerRelativeUrl | Where-Object { $_.ListItemAllFields.FSObjType -eq 1 }
    foreach ($subfolder in $subfolders) {
        Set-FolderPermissions $subfolder
    }
}

$rootFolders = Get-PnPFolder -Includes ListItemAllFields -Url "/sites/mysite/my document library" | Where-Object { $_.ListItemAllFields.FSObjType -eq 0 }

foreach ($rootFolder in $rootFolders) {
    Set-FolderPermissions $rootFolder
}

Disconnect-PnPOnline
© www.soinside.com 2019 - 2024. All rights reserved.