【PowerShell】PnP PowerShell を利用して SharePoint リストを操作しよう②

本ブログでは、社内PCまたはサーバから PowerShell コマンドを実行して SharePoint リストのデータを読み書きする方法について掲載します。
前回の記事では、PnP PowerShell の概要と利用環境の構築までをご紹介しました。
まだご覧になっていない方は、以下のリンクからご確認ください。
はじめに
本ブログは、PowerShell コマンドを実行して SharePoint リストのデータを読み書きする方法について、以下の3回に分けて掲載します。連載 | 概要 | 記載内容 |
第1回 | PowerShell モジュールの概要と 利用環境の構築手順について |
PowerShell と PnP PwerShell モジュールの インストール方法 |
第2回 | SharePoint Online と PnP PowerShell の連携 |
Microsoft Entra ID アプリケーション登録と サインイン用の電子証明書作成 |
第3回 | PowerShell コマンドによる スクリプトの実行 |
PnP PowerShell モジュールを利用した スクリプトの作成・実行 |
今回は第2弾として、SharePoint Online と PnP PowerShell を接続するまでの手順をご紹介します。
認証方法について
PowerShell を介して SharePoint Online にアクセスするには資格情報を取得する必要があります。
以前は、PnP Management Shell と呼ばれるマルチテナントアプリ登録の仕組みを利用して、スクリプトに必要なアクセス権限を付与することができましたが、セキュリティの強化から 2024年9月9日にこのマルチテナントアプリ登録は削除されました。
現在、資格情報を取得する方法として 独自の Entra ID アプリケーションを登録することが推奨されていますが、テナント管理者であり、Entra ID 側で必要な権限を持っている必要があります。
Microsoft Entra ID アプリケーション登録と電子証明書の作成
アプリケーションを介した認証の方法として、以下の方法が存在します。
・電子証明書の作成
・クライアントシークレットの作成
今回はクライアントシークレットより安全であり、Microsoft が推奨している電子証明書を使用する方法を紹介します。
他の認証方法については Microsoft ID プラットフォームにアプリケーションを登録する を参照してください。
また、アプリケーションを登録する前に、PnP PowerShell モジュールを介してテナントに対話的にサインインするか、ユーザーの操作を必要とせずにサインインするスクリプトを作成するかを決める必要があります。
本記事では、前段で作成した電子証明書を用いて、ユーザーの操作を必要としないスクリプトによるサインインを行う方法を取ります。
コマンドによるアプリケーションの登録と証明書の発行
PowerShell (7.4以降) を起動して以下のコマンドを実行します。
PowerShellコマンド
Register-PnPEntraIDApp -ApplicationName 作成アプリ名 -Tenant テナント名 -CertificatePassword (ConvertTo-SecureString -String “証明書パスワード” -AsPlainText -Force) -Store CurrentUser -Interactive
作成アプリ名:Microsoft Entra ID アプリに登録するアプリの名称
テナント名:Microsoft Entra テナントに関連付けられている組織のプライマリドメイン名(プライマリドメイン名は こちらの方法 から確認できます)
証明書パスワード:電子証明書を使用する際に求められるパスワード
各パラメータの詳細は Register-PnPAzureADApp を参照してください。
コマンド実行後にアカウント選択のポップアップが表示されます。
ここではテナントの管理者でEntra IDの編集権限を持っているアカウントを選択することで、アプリケーションの登録が行われます。
アプリケーションの登録が完了した場合、「Success」とコンソールの画面に表示され、アプリケーション(クライアント)IDが出力されます。
アプリケーション(クライアント)IDは Microsoft Entra 管理センター に登録されているアプリの概要からも確認することができます。
アプリケーション登録後、アプリに要求されるアクセス制限の確認が行われます。
Register-PnPAzureADAppコマンドのパラメータで権限の設定を行わない場合、アプリに対して以下の権限が付与されます。
●Microosft Graph
・Group.ReadWrite.All
・User.ReadWrite.All
●SharePoint
・AllSites.FullControl
・Sites.FullControl.All
・User.ReadWrite.All
コマンド実行時に特定の権限に設定したい場合は、次のようなパラメーターから権限の設定ができるようになっています。
・SharePointApplicationPermissions
・SharePointDelegatePermissions
・GraphApplicationPermissions
・GraphDelegatePermissions
各パラメータの詳細は Register-PnPAzureADApp を参照してください。
登録したアプリケーションの確認と証明書の出力
アクセス制限の設定後、Microsoft Entra 管理センターから 当該のアプリケーションが確認できます。
また、作成したアプリに証明書がアップロードされていることが確認できます。
この証明書に紐づく秘密鍵が格納されたファイルは PowerShell が実行されたパスに格納されます。
PowerShell を介した SharePoint Online の接続確認
PowerShellコマンド
connect-PnPOnline サイトURL -Tenant テナント名 -ClientID アプリケーション(クライアント)ID -CertificatePath “格納した証明書のパス” -CertificatePassword (ConvertTo-SecureString -String 証明書パスワード -AsPlainText -Force)
サイトURL:アクセスするSharePointサイトのURL(例:https://example.sharepoint.com/sites/sitename)
テナント名:Microsoft Entra テナントに関連付けられている組織のプライマリドメイン名(プライマリドメイン名は こちらの方法 から確認できます)
アプリケーション(クライアント)ID:前段で登録したアプリのアプリケーション(クライアント)ID
格納した証明書のパス:前段で出力された電子証明書(pfxファイル)が格納されたパス
証明書パスワード:Register-PnPEntraIDAppコマンドで設定した証明書のパスワード
各パラメータの詳細は Connect-PnPOnline を参照してください。
コマンド実行後にエラー文が表示されなければ SharePoint サイトへの接続が成功しています。
まとめ
今回は、SharePoint Online と PnP PowerShell を接続するまでの手順をご紹介しました。
本記事では登録するアプリケーションに対し、詳細にアクセス制限を指定していませんが、Microsoft Entra 管理センターからアクセス制限をかけたり、PnP PowerShell モジュールを用いることで SharePoint サイト別にアクセス制限をかけることができます。
次回は PnP PowerShell コマンドを用いて SharePointリスト を操作する方法についてご紹介します。
QES では Power Platform の開発支援、QAサポート、開発者教育、ガバナンス整備など、組織で Power Platform を活用するためのサポートを包括的にご提供しています。Power Platform 活用についてご興味がある/利用中だが課題を感じていらっしゃるお客様はまずはお気軽にお問い合わせください。
このブログで参照されている、Microsoft、Windows、その他のマイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。