2017-09-07 8 views
0

라이브러리 사용 권한에 그룹을 추가하려고합니다. 내 코드는 다음과 같습니다 : 나는 내가 생각할 수있는 모든 노력을했습니다라이브러리 사용 권한에 그룹을 추가하려고하면 CSOM powershell에서 일반 "콜렉션로드되지 않음"오류가 발생합니다.

#earlier in my code the list is created so it's already stored at this point, Breaking Inheritance is successful 
$myList.BreakRoleInheritance($false,$true) 
$myList.Update() 
$Ctx.ExecuteQuery() 

$GroupnameMembers="Site Members"  

$roleDefs = $Ctx.Web.RoleDefinitions 
$webgroups = $Ctx.Web.SiteGroups 
$Ctx.Load($roleDefs) 
$Ctx.Load($webgroups) 
$Ctx.ExecuteQuery() 

$roleTypeContributor = [Microsoft.SharePoint.Client.RoleType]"Contributor" 
$roleDefContributor = $roleDefs | where {$_.RoleTypeKind -eq $RoleTypeContributor} 
$MembersGroup = $webgroups | Where{$_.Title -eq $GroupnameMembers} 

$ContributorRoleDefBinding = new-object Microsoft.SharePoint.Client.RoleDefinitionBindingCollection($Ctx) 
$ContributorRoleDefBinding.Add($roleDefContributor) 

#earlier in my code the list is created so it's already stored at this point 
$collRoleAssign = $myList.RoleAssignments 
$Ctx.Load($collRoleAssign) 
$Ctx.ExecuteQuery() 

#Crashing on this line below: 
$collRoleAssign.Add($MembersGroup, $ContributorRoleDefBinding) 

, 심지어 수동으로 코드를 강화하고 나는 아직도 문제를 찾을 수 없습니다, 나는 각 단계에서 디버깅 출력에서 ​​발생하고 최종 코드 조각에 사용 된 모든 3 가지 변수에서 값이 있음을 확인했습니다.

어떤 도움이나 제안이라도 대단히 감사하겠습니다.

답변

0

스크립트와 약간 다른 점이 몇 가지 있습니다. 나는 $web에서 역할 정의를 참조 수 :

$roleDefContributor = $web.RoleDefinitions.GetByName("Contribute") 

을 그리고 $ctx.Load(..)의 역할 할당 서라운드 :

$ctx.Load($collRoleAssign.Add($MembersGroup, $ContributorRoleDefBinding)) 

근무 예 :

$list = $web.Lists.GetByTitle($listName) 
$ctx.Load($list) 

# break inheritance 
$list.BreakRoleInheritance($false, $true) 

$groupName = "Site Members" 

$webgroups = $ctx.Web.SiteGroups 
$ctx.Load($webGroups) 
$ctx.ExecuteQuery() 

$roleDef = $web.RoleDefinitions.GetByName("Contribute") 
$group = $webGroups | Where{ $_.Title -eq $groupName } 

$roleDefBinding = new-object Microsoft.SharePoint.Client.RoleDefinitionBindingCollection($ctx) 
$roleDefBinding.Add($roleDef) 

$ctx.Load($list.RoleAssignments.Add($group, $roleDefBinding)) 

$list.Update() 
$ctx.ExecuteQuery()