SharePoint サイトのコンテンツを一括管理したい場合などに便利なのが PnP PowerShell です。オープンソースのコミュニティが提供しています。
本記事では PnP PowerShell の概要とインストール方法に関するリファレンスをまとめておきます。
概要
もともとSharePoint PnP (Patterns & Practices : パターンズ アンド プラクティス) イニシアティブというものがあり、Microsoft 社のコンサルタントのメンバーが 2013 年に設立したのが始まりでオープンソースの技術コミュニティです。Microsoft 社以外からも Microsoft MVP などの有志が積極的にメンバーとして貢献していますし、誰でも Contributerとして立候補もできます。
なお、このコミュニティはのちに SharePoint Developer Community という名称となり、現在は SharePoint だけでなくMicrosoft 365 全般にわたり活動しているため Microsoft 365 Platform Comunity (PnP) という名称になっています。
コミュニティでは GitHub 上で様々なガイダンス、コードサンプルや便利なツールなどを公開しています。
SharePoint PnP PowerShell
Microsoft 365 のSharePoint の管理者が利用する SharePoint Online Management Shell も PowerShell コマンドレットを提供していますが、こちらは SharePoint テナントレベルでの管理者権限が必要であり、また SharePoint 管理センターレベルの設定を行うためのコマンド群です。サイトコレクションの管理、サイトデザインやサイトスクリプトの登録、SharePoint ハブの登録や解除などがありますが、サイトごとのコンテンツ管理までは行えません。
一方でSharePoint PnP PowerShell はもともと SharePoint Client Side API を用いたコマンドレットであり、サイトの管理者がコンテンツ管理を行えるようになっています。
👑PnP PowerShell (推奨)
従来は SharePoint に特化していた SharePoint PnP PowerShell ですが改善を続けています。現在は SharePoint 以外にも Microsoft Teams, Microsoft Planner, Power Automate などでも利用できるようになっており、名称も「SharePoint」を冠から外し単に「PnP PowerShell」と呼ぶようになっています。
PnP PowerShell はクロスプラットフォームの PowerShell モジュールとなっており、非常に多くのコマンドレッドが用意されています。この新しいモジュールは SharePointPnPPowerShellOnlineモジュールの後継となっており、従来のモジュールはすでにメンテナンスされなくなっています。新しいモジュールはクロスプラットフォーム対応となっているため Windows だけでなく、MacOSや Linux 上でも実行できます。ただし、クロスプラットフォームとして利用する場合は対象は SharePoint だけがサポートされます。
詳しくは下記のサイトを参照してください。
🔗 PnP PowerShell | PnP PowerShell
インストール方法
さて、インストールですが PowerShell 7.x を使用することが推奨されています。実際、PowerShell 5.x を使っていたとしても一部のコマンドは利用できますが、経験上エラーとなることもしばしばあるため PowerShell 7.x をインストールするようにしましょう。
インストール手順は下記の情報を参照してください。
🔗 Windows への PowerShell のインストール - PowerShell | Microsoft Learn
インストール自体は基本的には次のコマンドで行えます。
Install-Module -Name PnP.PowerShell
ただし、認証に関する設定も必要になるため注意が必要です。PnP PowerShellでは、テナントへの認証情報を使って認証することができます。ただし、基盤となる SDK の変更により、認証が可能な Azure AD アプリケーションを最初に登録する必要があります。
複数の方法が用意されており、組織によって適切な手順がことなります。詳しくは下記のページで確認してください。ちなみに、一番簡単なのは「Register-PnPManagementShellAccess」コマンドを実行することです。これで済むのが一番。。。
🔗 Authentication | PnP PowerShell
PnP PowerShellの最新版は PowerShell Gallery で確認できます。
🔗 https://www.powershellgallery.com/packages/PnP.PowerShell/
コメント