Сегодня поступила задача изменить права в библиотеке. Т.е. нужно назначить права на каждую папку в корне библиотеке и права на две вложенные папки.
Вот такой код у меня получился. Помогает быстро назначить права на большое количество папок и можно переопределить права и запустить вновь.
Результат прав для папки верхнего уровня
структура такова:
Библиотека
документов
|
|
|- Вендор Avast
(персональные права на папку)
| |
| |-
Папка 1
| |-Маркетинговые
материалы (персональные права)
| |-Лицензионные
формы (персональные права)
| |-Папка
N
|
|- Вендор Eset
(персональные права на папку)
| |
| |-
Папка 1
| |-Маркетинговые
материалы (персональные права)
| |-Лицензионные
формы (персональные права)
| |-Папка
N
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | $lib = $web .lists[ "Библиотека для портала" ] $rootFolder = $lib .RootFolder.SubFolders function AddPermissionToFolderGroup ( $folder , $GroupName , $PermissionLevel ) { Write-Host $folder "/" $GroupName "/" $PermissionLevel $group = $web .SiteGroups[ $GroupName ] $roleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment( $group ) $roleDefinition = $web .RoleDefinitions[ $PermissionLevel ]; $roleAssignment .RoleDefinitionBindings.Add( $roleDefinition ); $folder .Item.BreakRoleInheritance( $true ); $folder .Item.RoleAssignments.Add( $roleAssignment ); } function RemooveAllFolderPermission ( $folder ){ $folder .Item.ResetRoleInheritance() $folder .Item.BreakRoleInheritance( $false ); } foreach ( $folder in $rootFolder ){ $groupName = "Вендор " + $folder .Name # Определяем набор прав для папок $permissionsRootFolder = @( ( $groupName , "Совместная работа" ), ( "Все пользователи" , "Read" ), ( "Технические специалисты" , "Совместная работа" ) ); $permissionsSubFolderLicenseForm = @( ( "Редакторы лицензионных форм" , "Совместная работа" ), ( "Все пользователи" , "Read" ) ); $permissionsSubFolderMarketing = @( ( $groupName , "Совместная работа" ), ( "Продуктовые маркетологи" , "Совместная работа" ), ( "Все пользователи" , "Read" ) ); # удаляем права с папки верхнего уровня RemooveAllFolderPermission $folder # назначаем права на папку верзнего уровня foreach ( $perm in $permissionsRootFolder ){ Write-Host $perm [0] / $perm [1] AddPermissionToFolderGroup -folder $folder ` -GroupName $perm [0]` -PermissionLevel $perm [1] }; foreach ( $subFolder in $folder .SubFolders){ if( $subFolder .Name -eq "Маркетинговые материалы" ){ RemooveAllFolderPermission $subFolder foreach ( $perm in $permissionsSubFolderMarketing ){ Write-Host $perm [0] / $perm [1] AddPermissionToFolderGroup -folder $subFolder ` -GroupName $perm [0]` -PermissionLevel $perm [1] }; }; if( $subFolder .Name -eq "Лицензионные формы" ){ RemooveAllFolderPermission $subFolder foreach ( $perm in $permissionsSubFolderLicenseForm ){ Write-Host $perm [0] / $perm [1] AddPermissionToFolderGroup -folder $subFolder ` -GroupName $perm [0]` -PermissionLevel $perm [1] }; }; } } $web .Dispose() |
Результат прав для папки верхнего уровня
Комментариев нет:
Отправить комментарий