PnP 预配租户模板

可将租户模板看作 PnP 预配或网站模板之上的一个扩展。 你现可创建网站和团队,还可预配 Azure AD 条目和分类等等,而不是只将项目预配到网站。

注意

PnP 预配框架 & PnP 预配引擎是开放源代码解决方案,其活动社区为其提供支持。 没有用于 Microsoft 开放源代码工具支持的 SLA。

注意

租户模板的一项优秀资源是 PnP 预配模板存储库,它包含产品手册服务 (https://lookbook.microsoft.com) 中使用的各种模板。 你将找到一个租户文件夹,里面有多个文件夹,每个文件夹包含一个模板。 在子文件夹中,你将找到源文件夹。 在源文件夹中,你将找到 template.xml 文件,这就是租户模板。

序列

序列是用于创建网站集和可选子网站的驱动程序。 请注意,序列仅可用于创建所谓的“新式网站”,即通信网站、连接了 O365 组的新式团队网站,或者未连接 O365 组的新式团队。

<pnp:Sequence ID="sequence">
    <pnp:SiteCollections>
        <pnp:SiteCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="pnp:CommunicationSite" ProvisioningId="MAIN" SiteDesign="Topic" Title="My New Site" Description="" Url="/sites/mynewsite" IsHubSite="false" Owner="user@domain.com">
        <pnp:Templates>
            <pnp:ProvisioningTemplateReference ID="MAIN-TEMPLATE"/>
        </pnp:Templates>
        </pnp:SiteCollection>
    </pnp:SiteCollections>
</pnp:Sequence>

在上述片段中,你会看到我们要在应用模板时创建一个通信网站。

必须在 <pnp:SiteCollection> 元素中包含 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 属性,因为这样才能使架构弄清楚哪些属性应用于哪些元素。 与团队网站实例相比,通信网站具有不同的属性。

<pnp:SiteCollection> 元素的子元素为 <pnp:Templates>,你可用它来引用 1 个或更多模板。 虽然可将这些模板保留在单独的文件中,但建议一开始就将模板放在同一文件中。

引擎在分析模板时,首先会创建网站集,即带 URL /sites/mynewsite 的网站。 创建网站后,它将查找 ID 为 MAIN-TEMPLATE 的模板,并将该模板应用到刚创建的网站。

团队

可轻松配置要创建的团队:

 <pnp:Teams>
    <pnp:Team DisplayName="My Test Team" Description="" Visibility="Private" Photo="TeamData/TEAM_ef3020c6-1953-4367-b7c5-a6da8e24d049/photo_ef3020c6-1953-4367-b7c5-a6da8e24d049_432X432.jpg" Specialization="None">
      <pnp:FunSettings />
      <pnp:GuestSettings AllowCreateUpdateChannels="false" />
      <pnp:MembersSettings />
      <pnp:MessagingSettings />
      <pnp:Security>
        <pnp:Owners>
          <pnp:User UserPrincipalName="user@domain.com" />
        </pnp:Owners>
        <pnp:Members>
          <pnp:User UserPrincipalName="user@domain.com" />
        </pnp:Members>
      </pnp:Security>
      <pnp:DiscoverySettings ShowInTeamsSearchAndSuggestions="false" />
      <pnp:Channels>
        <pnp:Channel DisplayName="General" Description="test" ID="19:796d063baf3fad3ffa2231aeaf092c8fb9b44e@thread.skype">
          <pnp:Tabs>
            <pnp:Tab DisplayName="Lists and Pages" TeamsAppId="2a527703-1f6f-4559-a332-d8a7d288cd88"/>
            <pnp:Tab DisplayName="Docs" TeamsAppId="com.microsoft.teamspace.tab.files.sharepoint">
              <pnp:Configuration EntityId="" ContentUrl="https://tenant.sharepoint.com/sites/mynewsite/Shared%20Documents" RemoveUrl="" WebsiteUrl="" />
            </pnp:Tab>
          </pnp:Tabs>
        </pnp:Channel>
      </pnp:Channels>
    </pnp:Team>
  </pnp:Teams>

上面的示例创建了一个团队、添加了一个频道,还向该频道添加了两个选项卡。

使用 PnP PowerShell 预配包含团队的租户模板

由于以编程方式创建团队的唯一方法是使用 Microsoft Graph,因此在使用 PnP PowerShell 预配其中包含 Teams 元素的模板时,我们需要你提供 Graph 的访问令牌。 PnP PowerShell 可以自动为你获取此类访问令牌,但是,你需要先征得租户的同意。

可以通过执行如下操作实现上述目的:

Register-PnPManagementShellAccess

这仅是一次性操作。 执行此同意步骤后,你可以按照常规方法与 PnP PowerShell 连接。

预配引擎使用的流程如下:

  1. 使用凭据登录 Connect-PnPOnline <tenant>.sharepoint.com -Interactive
  2. 使用 应用模板 Invoke-PnPTenantTemplate -Path yourtemplate.pnp
  3. 预配引擎将开始预配其在该模板中找到的任何 SharePoint 工件。
  4. 引擎遇到需要 Microsoft Graph 访问令牌的工件时,将回调 PnP PowerShell 以获取此类令牌
  5. PnP PowerShell 将尝试按照上文所述,使用你在步骤 1 中使用的凭据以及你之前提供的同意,使用 PnP 命令行管理程序多租户 Azure 应用程序注册来获取令牌。 成功获取令牌后,它会将此令牌返回给预配引擎,后者将使用该令牌对 Microsoft Graph API 进行适当的调用。

如果以后要删除此同意,请登录到 Azure 门户,然后导航到 Azure Active Directory。 在“企业应用程序”部分中,你将找到一个名为“PnP 命令行管理程序”的条目,其客户端 ID 为 31359c7f-bd7e-475c-86db-fdb8c937548e。 删除此条目可清除许可。

另请参阅