たまにPnP PowerShellでSharePointへアクセスするのですが、この間このコードで以下のようなエラーが発生して接続できなくなりました。
$siteUrl = "https://xxxxxxxxxx.sharepoint.com/sites/portalsite"
Connect-PnPOnline -Url $siteUrl -Interactive
WARNING: Connecting with -Interactive used the PnP Management Shell multi-tenant App Id for authentication. As of September 9th, 2024 this option is not available anymore. Refer to https://pnp-github.io/powershell/articles/registerapplication.htm1 on how to register your own application.
翻訳:「-Inateractiveオプションは2024年9月9日以降、利用できなくなりました。」
「なん…だと…」
知らない間にSharePointへの接続ができなくなっていました。さぁどうする?
解決策
流れは以下の通りです。
- Entra ID にPnP PowerShell で経由するアプリを登録する。
- ソースコードを一部変更する。
Entra ID に PnP PowerShell で経由するアプリを登録する
Powershell の Register-PnPEntraIDApp コマンドを利用して、Entra ID アプリケーションを登録します。
Register-PnPEntraIDApp -ApplicationName アプリ名 -Tenant テナント名.onmicrosoft.com -Store CurrentUser -Interactive
「アプリ名」は自分の好きな名前を入れてください。「テナント名」は接続するSharePointのテナント名を入れてください。
コマンド処理が完了したら登録完了です。証明書ファイル(.cer, .pfx)も生成されますので保存しておきましょう。
登録できたアプリをEntra ID管理画面から確認します。
Entra ID管理画面 >「アプリケーション」>「アプリの登録」>「すべてのアプリケーション」タブ から作成したアプリを選択します。「概要」が選択されていると思います。画面に表示されている「アプリケーション(クライアントID)」をコピーしてください。
ソースコードを一部変更する
記事冒頭のソースコードに書かれていた Connect-PnP のパラメーターを変更します。
$siteUrl = "https://xxxxxxxxxx.sharepoint.com/sites/portalsite"
Connect-PnPOnline -Url $siteUrl -ClientId xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -Interactive
オプション -ClientId に先ほどコピーした「クライアントID」を入力します。これで接続できるようになりました。完了です!
まとめ
PnP PowerShell で作成していたプログラムを少し変更するだけで解決してよかったです。Graph などの別ライブラリを利用しないと解決できない、とかなると大幅な改修が必要になるため少しヒヤヒヤしていました。
- Entra ID に PnP PowerShell で経由するアプリを登録する。
- ソースコードを一部変更する。(Connect-PnPOnlineコマンドにClientIdオプションを追加するだけ!)
コメント