次の方法で共有


テナント テンプレートの PnP プロビジョニング

テナント テンプレートは、PnP プロビジョニングまたはサイト テンプレートの拡張機能と考えてみてください。 単に成果物をサイトにプロビジョニングする代わりに、サイトの作成、チームの作成、Azure AD エントリのプロビジョニング、分類のプロビジョニングなどを行えるようになりました。

注:

PnP プロビジョニング フレームワーク & PnP プロビジョニング エンジンは、アクティブなコミュニティがサポートを提供するオープン ソース ソリューションです。 Microsoft からのオープン ソース ツールのサポート SLA はありません。

注:

テナント テンプレートに適したリソースは、以前にルックブック サービスで使用されていたすべてのテンプレート (使用できなくなった) を含む PnP プロビジョニング テンプレート リポジトリ です。 テナント フォルダーがあり、そこにはそれぞれにテンプレートが含まれているいくつかのフォルダーがあります。 サブフォルダーには、ソース フォルダーがあります。 ソース フォルダーには、テナント テンプレートである 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 を持つサイトを作成します。 サイトを作成した後、MAIN-TEMPLATE の ID を持つテンプレートを見つけ、作成したばかりのサイトにそのテンプレートを適用します。

Teams

作成するチームを簡単に構成できます。

 <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>

上記のサンプルでは、​​チームを作成し、チャネルを追加し、チャネルに 2 つのタブを追加します。

PnP PowerShell を使用したチームを含むテナント テンプレートのプロビジョニング

Microsoft Graph を使用して、プログラムによるチームを作成する唯一の方法として、PnP PowerShell を使用して Teams の要素を含むテンプレートをプロビジョニングするときに、Graph にアクセス トークンを要求します。 PnP PowerShell は、このようなアクセス トークンを自動的に取得することができますが、最初にテナントに対して同意する必要があります。

このためには、次の手順を実行します。

Register-PnPManagementShellAccess

これは 1 回限りのアクションです。 この同意手順を実施した後は、以前使用したように通常どおりの方法で 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 に移動します。 [エンタープライズ アプリケーション] セクションには、クライアント ID 31359c7f-bd7e-475c-86db-fdb8c937548e の "PnP Management Shell" というエントリがあります。 このエントリを削除して同意をクリアします。

関連項目