もくじ
PnP.PowerShell とは
Microsoft コミュニティの有志が開発したライブラリでPower Shell上で動作する。
Sharepointに対して、ファイルのコピーや、サイト情報の取得などを行うことができる。
Microsoftの公式が出しているライブラリではないため、動作は完全に保証される者でないことに注意。(※2)
このライブラリは、オープン ソースでコミュニティが提供するライブラリであり、アクティブなコミュニティがサポートしています。 これはMicrosoft提供されるモジュールではないため、Microsoftからのこのオープンソース コンポーネントに対する SLA や直接サポートはありません。
事前準備
PnP.PowerShellを利用するためには以下5点が必要
- PowerShellのバージョンアップ
- NuGetのインストール
- PnP.PowerShellのインストール
- Azure ADアプリの登録
- VS CodeでPower Shell 拡張機能 のインストール
PowerShellのバージョンアップ
開発環境
PnP.PowerShellはPowershellのバージョン7以上で動作する。
「Windows Powershell ISE」というPowerShellのエディタがあるが、これはバージョン5までで更新が止まっており、非推奨になっていると公式が明言している (※3)
PowerShell v6 以降では ISE はサポートされません。 ISE の代わりを探しているユーザーは、PowerShell 拡張機能で Visual Studio Code を使用する必要があります。
また、「Windows Powershell ISE」の後継となるエディタは存在しないようなので、Visual Studio Codeで開発を行う必要がある(※4)(※5)
バージョンアップの手順
Power Shell上で以下のコマンドを実行する
文字化けが発生するかもだが、最終的にインストールした7.xのバージョンが表示されていればok
また場合によっては、[y/n]の入力が求められるが、yを入力すれば、同じようにインストールは完了する。
winget search Microsoft.PowerShell
CUIの起動
Windowsの左下の検索バーで「PowerShell 7」と入力し、「PowerShell 7」のアプリを立ち上げることが出来ればOK
NuGetのインストール
NuGet とは
Microsoftやサードパーティが提供する**.NET開発環境向けのパッケージ管理ツール (※7)
Pythonでいうpip、JavaScriptでいうnpmと同じ役割を果たす。
インストール手順
「PowerShell 7」を管理者権限で実行し以下のコマンドを実行する
Install-PackageProvider -Name NuGet -Force
PnP.PowerShellのインストール
インストール手順
インストールをするには、インストールポリシーを「信頼済み」に設定し、
Install-Modulでパッケージをインストールする
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
Install-Module PnP.PowerShell
Get-Moduleでインストール完了を確認する
PS C:\works\sharepoint> Get-Module -Name PnP.PowerShell
ModuleType Version PreRelease Name ExportedCommands
---------- ------- ---------- ---- ----------------
Manifest 3.1.0 PnP.PowerShell {Add-PnPAlert, Add-PnPApp, Add-PnPApplicationC…
ちなみに、インストール時点で「NuGet プロバイダーが必要です」という旨のメッセージが表示され、エラーになる。
Azure AD アプリの登録
PowerShellからSharePointへアクセスをするためにはAzure ADアプリを登録する必要がある。(※8)
Azure ポータル画面上でも登録はできるが、PnP.PowerShellでAzure ADアプリを登録するというコマンドレットが用意されているため、利用してみる。
[yourtenant].onmicrosoft.comはメールアドレスのドメインを指定する。
コマンドを実行するとアカウント認証が求められる。認証が完了すると「You are signed in now and can close this page.」と表示される。
Register-PnPEntraIDAppForInteractiveLogin -ApplicationName "PnP.PowerShell" -Tenant [yourtenant].onmicrosoft.com
Azure ポータル上にも作成したアプリが表示されたことを確認。
アプリケーション(クライアント)IDは接続時必要になるので、メモをしておくこと。
VS CodeでPower Shell 拡張機能 のインストール
VS Code上で拡張機能「Power Shell」をインストールする
Share Pointへ接続はConnect-PnPOnlineの1行のみで実行できる(※9)(※10)
<URL>にはサイト、サブサイトなどを指定できる。
i.e. tenant.sharepoint.com, https://tenant.sharepoint.com, tenant.sharepoint.com/sites/hr, etc.
<client id>にはAzure ADアプリのクライアントIDを設定する。
Connect-PnPOnline -Url <URL> -ClientId <client id>
# 全てのページを取得する
$pages = Get-PnPPage
# 1番目のページのファイル名を表示する
Write-Output Length($pages[0].Name)
参考サイト
※2 PnP PowerShell の概要 | Microsoft Learn
※3 Windows PowerShell ISE の紹介 – PowerShell | Microsoft Learn
※4 PnP PowerShellコマンドを実行できない時に確認すること
※5 PowerShell-7のインストールに沼った話 #PowerShell – Qiita
※6 Windows への PowerShell のインストール – PowerShell | Microsoft Learn
※7 NuGet とは何か。またどのような働きをするのか | Microsoft Learn
※8 Register an Entra ID Application to use with PnP PowerShell | PnP PowerShell




