PnP PowerShellの仕様変更に伴う接続エラー対処方法

こんにちは!SxSの村木です。

10月に入りやっとやっと!過ごしやすくなってきましたね😊🐈
寒暖差によっても身体が参ってしまいそう😫なので、温度調節は十分に行って参りましょう!

さて、本日は先月仕様変更がありました PnP PowerShell についてお話ししようかと思います。

PnP PowerShell をよくご利用の方は、今回の仕様変更による対応は既に実施済みかと思いますが、
たまにしか使っていないからまだ対応していないよ~という方は今回の記事を参考にしてくださいね。

目次

このブログは SxS を提供しているソノリテが作成しています。

PnP PowerShell とは?

PnP PowerShell とは、PowerShell モジュールの一つであり、
SharePoint Online を中心とした Microsoft 365 環境で動作するコマンドレットを提供します。

この PnP PowerShell は、Microsoft 社が提供しているモジュールではなく、
オープンソースのコミュニティが提供するモジュールとなります。

その為、Microsoft 社からの PnP PowerShell の直接的なサポートはないのですが、
SxSでは PnP PowerShell コマンドレットのお問い合わせも対応することができますので、
PnP PowerShell でお悩みがある方は是非お問い合わせくださいね!(唐突に宣言)

従来の接続方法

これまでは PnP PowerShell を使用するには、
予めRegister-PnPManagementShellAccessというコマンドレットを使用して、
テナントに『PnP Management Shell』というアプリケーションを登録する必要がありました。

このアプリケーションを使用して SharePoint に接続し、情報取得や設定変更等を行います。
『PnP Management Shell』アプリケーションは委任されたアクセス許可しか付与されていないため、
PnP PowerShell にて接続したアカウントのアクセス許可の範囲内の操作のみ可能となります。

Register-PnPManagementShellAccessコマンドレットを使用せず、
独自のアプリケーションを登録して、PnP PowerShell を利用することもできます。
委任されたアクセス許可ではなく、アプリケーション自体にアクセス許可を付与しておき、
Client Id と証明書やシークレットで接続し、ユーザーの認証なしで定期的に PowerShell を実行するといったことも可能です。
なお、このような独自のアプリケーションを使用している場合は、今回の仕様変更の影響は受けません。

今回の仕様変更について

本題となる今回の仕様変更は、セキュリティの強化およびテナント制御方法の強化のため、
PnP Management Shell』アプリケーションが削除されることになったというものです。

『PnP Management Shell』アプリケーションを使用して接続しようとすると、以下のエラーが発生します。

AADSTS700016: Application with identifier ‘31359c7f-bd7e-475c-86db-fdb8c937548e’ was not found in the directory ‘The companyname’. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You may have sent your authentication request to the wrong tenant.
※『PnP Management Shell』アプリケーションの Id は ‘31359c7f-bd7e-475c-86db-fdb8c937548e’

引き続き PnP PowerShell を使用するには、別のアプリケーションを作成する必要があります。

アプリケーション作成方法

従来と同じように接続したいのであれば、モジュールのバージョン 2.10.0 で追加された
以下のコマンドレットを実行してアプリケーションを登録します。

Register-PnPEntraIDAppForInteractiveLogin -ApplicationName "任意のアプリ名" -Tenant [tenant].onmicrosoft.com -Interactive

実行すると登録されたアプリケーションの Client Id が出力されます。
アプリケーションの Client Id は接続時に指定しますので、こちらは控えておきましょう。
※ Microsoft Entra 管理センターでも Client Id (アプリケーション ID) を確認できます

上記コマンドレットを使用せず、Microsoft Entra 管理センターにて、手動でアプリケーションを登録することも可能です。

新しい接続方法

新しいアプリケーションの登録が完了したら、接続してみましょう。

これまで利用していた接続コマンドレットが、
Connect-PnPOnline -Url [SiteURL] -Interactive
であれば、先ほどの Client Id をパラメーターに追加し、以下のように実行して接続します。

Connect-PnPOnline -Url [SiteURL] -Interactive -ClientId [Client Id]

Interactive ではなく、Credentials で接続している場合は、
Connect-PnPOnline -Url [SiteURL] -Credentials [Credential] -ClientId [Client Id]
となりますよ。


今回は PnP PowerShell の仕様変更についてお話ししました。
既存のスクリプト利用時に Client Id を指定することを忘れないように注意しましょう!

PnP PowerShell もサポートしてくれるSxSはどのようなサービスなのか、
ご興味がございましたら、以下のバナーからSxS紹介ページをご覧いただければ幸いです。

更にもっとSxSを知りたい!という方は、ぜひお問い合わせフォームよりご連絡ください。

ではまた次回の記事でお会いしましょう。
SxSブログのチェックをよろしくお願いします!

目次