SharePoint Online可以使用PnP引擎部署站点模板。这个模板的功能非常强大,除了可以定制主题,外观以外,还可以生成list并导入数据,生成文档库,导入文档等等。

今天重点说一下其中的站点权限部分。目前最新的Schema版本是202002,完整版可以参考 https://github.com/pnp/PnP-Provisioning-Schema/blob/master/OfficeDevPnP.ProvisioningSchema/ProvisioningSchema-2020-02.xsd。另外还有一个非常详细的样例文件,链接是:https://github.com/pnp/PnP-Provisioning-Schema/blob/master/Samples/ProvisioningSchema-2020-02-FullSample-01.xml。

 1       <pnp:Security BreakRoleInheritance="true"
2 CopyRoleAssignments="false"
3 ClearSubscopes="true"
4 AssociatedGroups="Test Value"
5 AssociatedMemberGroup="{parameter:AssociatedMemberGroup}"
6 AssociatedOwnerGroup="{parameter:AssociatedOwnerGroup}"
7 AssociatedVisitorGroup="{parameter:AssociatedVisitorGroup}"
8 RemoveExistingUniqueRoleAssignments="true"
9 ResetRoleInheritance="true" >
10 <pnp:AdditionalAdministrators ClearExistingItems="false">
11 <pnp:User Name="user@contoso.com"/>
12 <pnp:User Name="U_SHAREPOINT_ADMINS"/>
13 </pnp:AdditionalAdministrators>
14 <pnp:AdditionalOwners ClearExistingItems="true">
15 <pnp:User Name="user@contoso.com"/>
16 <pnp:User Name="U_SHAREPOINT_ADMINS"/>
17 </pnp:AdditionalOwners>
18 <pnp:AdditionalMembers>
19 <pnp:User Name="user@contoso.com"/>
20 <pnp:User Name="U_SHAREPOINT_ADMINS"/>
21 </pnp:AdditionalMembers>
22 <pnp:AdditionalVisitors>
23 <pnp:User Name="user@contoso.com"/>
24 <pnp:User Name="U_SHAREPOINT_ADMINS"/>
25 </pnp:AdditionalVisitors>
26 <pnp:SiteGroups>
27 <pnp:SiteGroup
28 Title="Power Users"
29 Description="Group of Power Users"
30 Owner="admin@contoso.com">
31 <pnp:Members ClearExistingItems="true">
32 <pnp:User Name="user1@contoso.com" />
33 <pnp:User Name="user2@contoso.com" />
34 <pnp:User Name="user3@contoso.com" />
35 </pnp:Members>
36 </pnp:SiteGroup>
37 </pnp:SiteGroups>
38 <pnp:Permissions>
39 <pnp:RoleDefinitions>
40 <pnp:RoleDefinition Name="Manage List Items" Description="Allows a user to manage list items">
41 <pnp:Permissions>
42 <pnp:Permission>ViewListItems</pnp:Permission>
43 <pnp:Permission>AddListItems</pnp:Permission>
44 <pnp:Permission>EditListItems</pnp:Permission>
45 <pnp:Permission>DeleteListItems</pnp:Permission>
46 </pnp:Permissions>
47 </pnp:RoleDefinition>
48 </pnp:RoleDefinitions>
49 <pnp:RoleAssignments>
50 <pnp:RoleAssignment Principal="Power Users" RoleDefinition="Manage List Items"/>
51 <pnp:RoleAssignment Principal="user1@contoso.com" RoleDefinition="Manage List Items"/>
52 <pnp:RoleAssignment Principal="user2@contoso.com" RoleDefinition="Full Control"/>
53 <pnp:RoleAssignment Principal="user3@contoso.com" RoleDefinition="Full Control" Remove="true"/>
54 </pnp:RoleAssignments>
55 </pnp:Permissions>
56 </pnp:Security>

我们从中截取<pnp:Security>部分来看看如何自定义站点权限。

代码第10行到第13行,可以指定site collection的管理员。

14行到17行,指定站点的管理员,要注意的是这个和site collection管理员是不一样的。

18-25行,指定站点的成员和访问者。

26-37行创建一个新的SharePoint Group,并且添加用户和其他组到这个新组之中。

39-48行创建的新的permission level.

49-54行指定权限到user或group。指定Group的时候,要使用“c:0t.c|tenant|{groupID}”作为Principal的参数,另外特别需要注意的是,Full Control,Edit,Read权限像样例填写是不能正确应用的,需要分别改成Administrator,Editor和Reader。

另外可以针对列表和文档库单独设置权限。在<pnp:ListInstance>下面,可以找到如下单独的权限设置部分。

1 <pnp:Security>
2 <pnp:BreakRoleInheritance CopyRoleAssignments="true" ClearSubscopes="true">
3 <pnp:RoleAssignment Principal="user1@contoso.com" RoleDefinition="Full Control"/>
4 <pnp:RoleAssignment Principal="user2@contoso.com" RoleDefinition="Edit"/>
5 <pnp:RoleAssignment Principal="user3@contoso.com" RoleDefinition="View Only"/>
6 </pnp:BreakRoleInheritance>
7 </pnp:Security>

在设置好模板文件后,可以使用powershell 进行测试

Apply-PnPProvisioningTemplate -Path template.xml #部署全部模板

or

Apply-PnPProvisioningTemplate -Path template.xml -Handlers SiteSecurity #只部署<pnp:Security>部分

SharePoint Online 站点模板中权限的设置的更多相关文章

  1. 浅谈SharePoint 2013 站点模板开发 转载自http://www.cnblogs.com/jianyus/p/3511550.html

    一直以来所接触的SharePoint开发,都是Designer配合Visual Studio,前者设计页面,后者开发功能,相互合作,完成SharePoint网站开发.直到SharePoint 2013 ...

  2. 浅谈SharePoint 2013 站点模板开发

    一直以来所接触的SharePoint开发,都是Designer配合Visual Studio,前者设计页面,后者开发功能,相互合作,完成SharePoint网站开发.直到SharePoint 2013 ...

  3. SharePoint 2013 图文开发系列之定义站点模板

    SharePoint站点模板是一个非常好的功能,方便我们开发一类网站,然后在此基础上做二次开发,对于SharePoint的使用,有着举足轻重的作用. 因为篇幅比较长,所以加上目录,方便大家查看: 一. ...

  4. pageadmin CMS网站制作教程:模板中的站点数据调用

    pageadmin CMS网站建设教程:模板中的站点数据调用 1.获取当前站点Id,返回int数字 Html.CurrentSiteId() 2.获取当前站点url地址,返回string字符串 Htm ...

  5. 在C#开发中如何使用Client Object Model客户端代码获得SharePoint 网站、列表的权限情况

    自从人类学会了使用火,烤制的方式替代了人类的消化系统部分功能,从此人类的消化系统更加简单,加速了人脑的进化:自从SharePoint 2010开始有了Client Side Object Model ...

  6. 为 Azure Resource Manager 中的虚拟机设置 WinRM 访问权限

    Azure 服务管理中的 WinRM 与 Azure Resource Manager Note Azure 具有用于创建和处理资源的两个不同的部署模型:Resource Manager 和经典. 本 ...

  7. eclipse 设置文本模板中 insert variable... 函数 详解

    设置文本模板简要图: 设置文本模板详细过程:http://www.cnblogs.com/lsy131479/p/8478711.html 此处引出设置文本模板中 insert variable... ...

  8. 编写Java程序,实现对兵营类的封装,将兵营类中的所有属性设置为私有访问权限,方法设置为公有访问权限

    返回本章节 返回作业目录 需求说明: 实现对兵营类的封装 将兵营类中的所有属性设置为私有访问权限. 将兵营类中所有属性的赋值方法设置为公有访问权限. 要求兵营名称的长度在4-8位之间. 要求兵营士兵的 ...

  9. O365(世纪互联)SharePoint 之站点个性化

    前言 上一篇文章中,我们简单介绍了如何使用O365中SharePoint Online文档库,SharePoint Online的优点就是提供给我们很多非常方便开箱即用的功能,让我们快速的搭建站点,方 ...

随机推荐

  1. Python -- 修改、添加和删除元素

    大多数列表将是动态的,这意味着列表创建后,将随着程序的运行增删元素. 修改列表元素 修改列表元素的语法与访问列表元素的语法类似.要修改列表元素,可指定表名和要修改的元素指引,再指定该元素的新值. #代 ...

  2. iOS 调用系统拍照遇到的坑

    iOS 11之前用的一套图片选择器框架,之前一直没问题,iOS11之后拍照后回调失败......,打断点方法完全执行,也能回调成功:但是去掉断点又恢复不能会调的问题.困扰了一下午,愣是没有解决.后来把 ...

  3. IIS重写2.0 IIS伪静态 下载地址

    IIS重写2.0 IIS伪静态 下载地址 https://www.iis.net/downloads/microsoft/url-rewrite#additionalDownloads Downloa ...

  4. springMVC生成pdf文件

    pom.xml文件配置=== <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --> <dependenc ...

  5. C#—连接SQLserver数据库,并执行查询语句代码

    //字段ArticleID,ArticleName,ArticleNumber,Unit,Weight,Price,Currency,IsIuggage,IsQuarantine string str ...

  6. Vue从零开发SPA项目

    所谓SPA(single page web application),就是单页面项目的意思. vue的亮点就是我们只需要关注数据的变化,下面演示一下从零开始创建一个独立项目,并且能自定义路由,提交表单 ...

  7. Hadoop集群模式安装出现的若干问题

    一.域名解析问题 域名解析暂时失败问题 vim /etc/sysconfig/network 查看主机名 vim etc/hosts 配置IP地址与主机名 192.168.60.132 centos ...

  8. JustAuth 1.15.9 版发布,支持飞书、喜马拉雅、企业微信网页登录

    新增 修复并正式启用 飞书 平台的第三方登录 AuthToken 类中新增 refreshTokenExpireIn 记录 refresh token 的有效期 PR 合并 Github #101:支 ...

  9. 腾讯IOT之树莓派物联网设备

    目录 腾讯IOT之树莓派物联网设备 硬件配置 软件配置 Tecent IOT 开发平台的使用 新建项目 新建产品 添加自定义功能 设备开发 微信小程序配置 面板配置 新建设备 使用设备 在线调试 设备 ...

  10. 在kotlin用jni调用c++的dll中踩的坑

    在kotlin用jni调用c++的dll中踩的坑 can't find dependents libraries 不是个有效的32位程序(或者是?????32??????) 常规检查 java 指针 ...