[Sharepoint]PnP.PowerShellを利用してSharePointのページにアクセスする(準備編)

PnP.PowerShell とは

Microsoft コミュニティの有志が開発したライブラリでPower Shell上で動作する。

Sharepointに対して、ファイルのコピーや、サイト情報の取得などを行うことができる。

Microsoftの公式が出しているライブラリではないため、動作は完全に保証される者でないことに注意。(※2)

このライブラリは、オープン ソースでコミュニティが提供するライブラリであり、アクティブなコミュニティがサポートしています。 これはMicrosoft提供されるモジュールではないため、Microsoftからのこのオープンソース コンポーネントに対する SLA や直接サポートはありません。

 

事前準備

PnP.PowerShellを利用するためには以下5点が必要

  1. PowerShellのバージョンアップ
  2. NuGetのインストール
  3. PnP.PowerShellのインストール
  4. Azure ADアプリの登録
  5. 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」をインストールする

 

 

SharePointの認証・接続する

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)

 

 

参考サイト

※1 PnP PowerShell 公式サイト

※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

※9 Authentication | PnP PowerShell

※10 Connect-PnPOnline | PnP PowerShell