PnP Provisioning でクラシックサイトのマスターページとページレイアウトを SPO に展開する方法
はじめに
PnP Provisioning を使って、クラシックサイトのマスターページとページレイアウトを SharePoint Online サイトに展開する方法を調査しました。 想像していたのとは違う形になってしまったので、展開方法を残しておきたいと思います。 なお、PnP Provisioning は日々進化しているオープンソースのライブラリのため、ここでの検証結果が未来永劫有効なものではないということをご了承ください。 2022年5月6日時点のコードで検証しています。
普通にテンプレート化してもダメ
Get-PnPSiteTemplate コマンドレットで PnP サイトテンプレートを作成すればマスターページもページレイアウトもテンプレートに含まれるだろうと思っていたのですが、それだけではうまく行きませんでした。 試したことは、Get-PnPSiteTemplate コマンドレットで .pnp 形式のファイルを出力させ、これを Invoke-PnPSiteTemplate コマンドレットで展開する方法です。 .pnp 形式のテンプレートは無事作成することができ、.pnp ファイルの拡張子を .zip に変更し解凍することでマスターページファイル(.master)が含まれていることも確認したのですが、この方法では .pnp ファイルにページレイアウトが含まれませんでした。 試しに Invoke-PnPSiteTemplate コマンドレットを実行するも、マスターページファイルは展開されるもののマスターページとしては認識されず・・・ そしてもちろんページレイアウトも展開されませんでした。 色々オプションを付けてもうまく行かなかったため、この方法は諦めました。
なお、エラーが出ていても同期ができないだけで、過去に同期されたファイルはローカルに残り続けます。
制限を解除する場合は「Remove-SPOTenantSyncClientRestriction」を実行します。



















※画像はあえて小さくして載せてます。
そんな時にファームで利用しているデータベースの一覧が見れるととても便利なわけですが、PowerShell で手軽に実現できてしまいます。