【问题标题】:Sharepoint permissions to folders using powershell pnp使用 powershell pnp 对文件夹的 Sharepoint 权限
【发布时间】:2019-11-15 17:26:48
【问题描述】:
$credentail = Import-Clixml D:\cred.xml
$siteurl = "https://metho.sharepoint.com/sites/EducationandHumanities41"
$access = "Read"
$folders = Import-csv "C:\Users\metho\Desktop\sharepoint_Permissions.csv"

Connect-PnPOnline -Url $siteurl -Credentials $credentail 




Foreach ($entry in $folders) {
$ListName = $entry.'Assoc Dean Area Name'
$foldername = $entry.'Curriculum Area Name'
$foldername2 = $entry.'Course Title'
$foldername3 = $entry.c16
$Nameofthefolder = $entry.currTeamName
$emailAddress= $entry.facultyHeademail
$UserOne = $entry.DeanName


#Get-PnPFolder -Url $Listname

$ListitemID = Get-PnPListItem -List $ListName


#$listItem = Get-PnPListItem -List $Listname -Query "<View><Query><Where><Eq><FieldRef Name='Id'/><Value Type='Text'>$ListName</Value></Eq></Where></Query></View>"


Set-PnPListItemPermission -List $Listname -Identity $ListitemID -User $UserOne -AddRole $access 


}

我正在努力将权限应用于 SharePoint“文档库”下的所有子文件夹。我正在为子文件夹的 ID 苦苦挣扎(我认为这是问题所在)。如果我手动添加 ID,那么它会将权限应用于文件夹的特定 ID,但我希望将权限应用于文档库下的所有子文件夹。

Set-PnPListItemPermission : Cannot convert 'System.Object[]' to the type 'SharePointPnP.PowerShell.Commands.Base.PipeBinds.ListItemPipeBind' required by parameter 'Identity'. Specified method is not supported.
At line:31 char:53
+ ... t-PnPListItemPermission -List $Listname -Identity $ListitemID -User $ ...
+                                                       ~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Set-PnPListItemPermission], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgument,SharePointPnP.PowerShell.Commands.Lists.SetListItemPermission

【问题讨论】:

    标签: powershell sharepoint permissions


    【解决方案1】:

    命令Get-PnPListItem 将从列表中检索所有列表项。根据您的要求,您需要遍历文档库中的每个文件夹并应用权限。

    这是我的演示:

    $listname="test"
    $SiteURL = "https://tenant.sharepoint.com/sites/michael"
    Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)
    $ParentFolderURL = "/test" #Site Relative Path of the document Library
    $UserAccount = "michael@domain.com"
    $AllFolders= Get-PnPFolderItem -ItemType Folder -FolderSiteRelativeUrl $ParentFolderURL | Where {($_.Name -ne "Forms") -and (-Not($_.Name.StartsWith("_")))}
    
    ForEach($Folder in $AllFolders) { 
     #Grant Contribute permissions to the Folder 
    Set-PnPListItemPermission -List $ListName -Identity $Folder.ListItemAllFields -User $UserAccount -AddRole 'Read' 
    }
    

    【讨论】:

    • 添加 AD 组而不是用户以获得文件夹权限的最佳方式是什么,因为我们正在探索添加组以更轻松地管理权限。?
    • SharePoint 将 AD 组视为普通用户。所以我认为这种方式也适用于在文件夹中添加 AP 组。
    • 太好了@Michael。这非常有效。将名称更改为 groupm 会选择正确的域组并为文件夹分配权限。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 2021-03-18
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    相关资源
    最近更新 更多