使用powershell将权限/共享子文件夹设置为库中的组
我正在使用SP 2013 我必须为文档库中的子文件夹设置特定权限 我有以下脚本:使用powershell将权限/共享子文件夹设置为库中的组,powershell,sharepoint,sharepoint-2013,Powershell,Sharepoint,Sharepoint 2013,我正在使用SP 2013 我必须为文档库中的子文件夹设置特定权限 我有以下脚本: Add-PSSnapin Microsoft.SharePoint.PowerShell Function GetFiles($folder) { # Use recursion to loop through all subfolders. foreach ($subFolder in $folder.SubFolders) { GetFiles($subFolder)
Add-PSSnapin Microsoft.SharePoint.PowerShell
Function GetFiles($folder)
{
# Use recursion to loop through all subfolders.
foreach ($subFolder in $folder.SubFolders)
{
GetFiles($subFolder)
}
if($folder.Name -eq "C" -Or $folder.Name -eq "B3-B6" -Or $folder.Name -eq "C8" -Or $folder.Name -eq "D" -Or $folder.Name -eq "A5" -Or $folder.Name -eq "A1-A4")
{
Write-Host "+"$folder.Name
if($folder.Name -eq "C8")
{
$roleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($web.SiteGroups["HumanResources-HR - C8"])
}
else
{
$roleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($web.SiteGroups["HumanResources-HR - Other"])
}
#Get Permission Level, such as "Read", "Contribute", etc
$roleAssignment.RoleDefinitionBindings.Add($web.RoleDefinitions["Contribute"])
$roleAssignment.RoleDefinitionBindings.Add($web.RoleDefinitions["Read"])
#Grant Access to specified Group
$folder.RoleAssignments.Add($roleAssignment)
#To Remove Access: Call $item.RoleAssignments.Remove($group) . No Need for objects: roleAssignment, roleDefinition
$folder.Update();
Write-Host "Successfully added $($PermissionLevel) to $GroupName group in $($folder.Name)" -foregroundcolor Green
}
}
$web = Get-SPWeb -Identity "xxx.xxx.xxx/sites/xxx"
$rfolder=$web.Lists["DOKUMENTNA KNJIŽNICA"].RootFolder
GetFiles($rfolder)
我在行中得到一个错误:$folder.roleasignments.Add($roleasignment)
不能对空值表达式调用方法。第29行字符:13+$folder.roleasignments.Add($roleasignment)+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~类别信息:无效操作:(:)[,RuntimeException+FullyQualifiederRoid:InvokeMethodFull
所有文件夹都会发生这种情况
我尝试了同样的代码来设置整个库的权限,结果成功了。但它不适用于文件夹
请帮帮我。谢谢在分配新权限之前,您需要中断对子文件夹的继承
$folder.BreakRoleInheritance(“true”)
请参阅下面的脚本,它执行类似的操作。从
我已更正了格式,并将整个内容粘贴到此处,以便更好地阅读:
Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue
$site = new-object Microsoft.SharePoint.SPSite("http://myserver/")
$web = $site.OpenWeb()
function GrantGroupPermission($groupName)
{
[Microsoft.SharePoint.SPGroupCollection]$spgroups = $web.SiteGroups
[Microsoft.SharePoint.SPGroup]$spgroup = $groups[$groupName]
$sproleass=new-object Microsoft.SharePoint.SPRoleAssignment([Microsoft.SharePoint.SPPrincipal]$spgroup)
$folder.BreakRoleInheritance("true")
$sproleass.RoleDefinitionBindings.Add($web.RoleDefinitions["Contribute"])
$folder.RoleAssignments.Add($sproleass);
Write-Host "Permission provided for group ", $groupName
}
function GrantUserpermission($userName)
{
[Microsoft.SharePoint.SPUserCollection]$spusers=[Microsoft.SharePoint.SPUserCollection]$web.SiteUsers
[Microsoft.SharePoint.SPUser]$spuser=$spusers[$userName]
$sproleass=new-object Microsoft.SharePoint.SPRoleAssignment([Microsoft.SharePoint.SPPrincipal]$spuser)
$folder.BreakRoleInheritance("true")
$sproleass.RoleDefinitionBindings.Add($web.RoleDefinitions["Contribute"])
$folder.RoleAssignments.Add($sproleass);
Write-Host "Permission provided for user ", $userName
}
$doclib=[Microsoft.SharePoint.SPDocumentLibrary]$web.Lists["Shared Documents"]
$foldercoll=$doclib.Folders;
foreach($folder in $foldercoll)
{
Write-Host $folder.Name
if($folder.Name.Equals("f2"))
{
GrantUserPermission("raj")
}
}
Write-Host "Completed...."
$web.Close()
$site.Dispose()
你好对于可以使用的文件夹:Set Acl:错误表明它没有任何值。请检查
$roleasignment
和$folder.roleasignments