コルネの進捗や備忘録が記されたなにか

進捗や成果物や備忘録てきななにかを雑に更新していきます。

PnP.PowerShell を利用する


スポンサードリンク

はじめに

PnP.PowerShell を利用するにあたり、ちょっと躓いたので備忘録も兼ねて手順と詰まった点纏めます。

SharePointPnPPowerShellOnline を利用している場合

現在SharePointPnPPowerShellOnline を利用していたユーザーはSharePointPnPPowerShellOnline は古いので新しいやつ入れろよ。てきなメッセージがでている可能性があります。(このメッセージメモしとくの忘れた。。。)

その場合は以下コマンドで事前にSharePointPnPPowerShellOnline をアンインストールしておきましょう。

Uninstall-Module -Name SharePointPnPPowerShellOnline -AllVersions -Force

PnP モジュールのインストール

PnP モジュールのインストールを行います。
管理者権限でPowerShell を開いて以下コマンドを実行します。

Install-Module -Name PnP.PowerShell

PnP モジュールを利用してSharePoint Online へアクセスしてみる

以下コマンドでSharePoint Online へアクセスしてみます。
[YOUR TENANT] には自身のテナントを、 [SharePoint SITE] にはアクセスしたいSharePoint サイトを入力してください。

$url = 'https://[YOUR TENANT].sharepoint.com/sites/[SharePoint SITE]'

Connect-PnPOnline -Url $url -Credentials (Get-Credential)

上記を記載した、コードを実行すると、Credential 情報(ログイン情報)が聞かれますので、設定したSharePoint サイトに対して適切な権限のあるアカウントでログインします。

その結果以下のようなメッセージが表示されたかと思います。

Line | 3 | Connect-PnPOnline -Url $url -Credentials (Get-Credential) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | AADSTS65001: The user or administrator has not consented to use the application with ID '31359c7f-bd7e-475c-86db-fdb8c937548e' named 'PnP | Management Shell'. Send an interactive authorization request for this user and resource. Trace ID: 00e3e933-a737-4c20-b619-7ef4ba9c6600
| Correlation ID: c4cee3cf-b64b-4e42-819b-e02c2aa85e4b Timestamp: 2021-06-19 17:39:32Z

どうやら 'PnP Management Shell' というアプリが許可されてないからブロックされてるっぽいことをいわれた。

ただ、管理センターでSharePoint の項目を探してみたが、アプリを許可するっぽい項目は見当たらなかった。(見落としていましたら教えてください)

自身のテナントにPnP Manager Shell をインストールする

2種類のインストール方法を記載しますが、恐らく1つめの"ドキュメントに記載のやり方"で行ったほうがいいと思います。

ちなみに私は、インストール実施時は、1つ目の方法知らなかったので2つ目の方法でインストールを行ったので、できないことはないです。
ただ、このやり方は古いやり方ですね。

また、本情報をご教示してくださった、@shibatea365 さんありがとうございます!

ドキュメントに記載のやりかた

こちらのドキュメントにて、初回利用時に実行する必要があるコマンドが記載されています。

pnp.github.io

PnP PowerShell allows you to authenticate with credentials to your tenant. However, due to changes in the underlying SDKs we require you first to register a Azure AD Application which will allow you to authenticate.

The easiest way to do this by using a built-in cmdlet:

Azure AD にアプリケーション登録するっぽいですね。

以下コマンドを実行して、PnP Manegement Shell の登録を行います。

Register-PnPManagementShellAccess

このコマンドはAzure AD への書き込み権限のあるアカウントで実行してください。

上記とは別のやり方

調べた結果PnP のリポジトリにて以下のようなissues が上がっていた。

github.com

このissues の中にて以下のようにコメントされている。

github.com

Hi, Thanks for using PnP. In order to apply the template, you need to have the PnP Management Shell app properly configured in your target tenant. We are working on releasing a new cmdlet in PnP PowerShell to ease and speed up the registration process. In the meantime, if you like, you can follow these steps (just the very first time):

どうやら、もっと簡易的に利用ができるように現在開発を進めているところらしいが、現時点では初回利用時は以下コマンドでPnP Management Shell をインストールする必要があるようだ。

Connect-PnPOnline -Url "https://[YOUR TENANT].sharepoint.com/" -PnPManagementShell

このコマンドをPowerShell で実行すると以下のような警告が表示される。

警告:
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code XXXXXXX to authenticate.

記載の通り、 https://microsoft.com/devicelogin へアクセスし、表示されているコードを入力する。
その後は画面に従って許可を行う。

以上でテナントにPnP Manager Shell をインストールすることができた。

先ほどPowerShell で実行したコマンドはずっと実行中扱いになっている場合は、しばらく様子みて、状況変わらなけば Ctrl + C で終了してしまっても問題なかった。

PnP モジュールを利用して指定のサイトにリストを作成してみる

以下コマンドで、SharePoint サイトにリストを作成してみる。
* サンプルなので、記述は最小限

$url = 'https://[YOUR TENANT].sharepoint.com/sites/[SharePoint SITE]'

Connect-PnPOnline -Url $url -Credentials (Get-Credential)

New-PnPList -Title "newSampleList" `
            -Url "Lists/newSampleList" `
            -Template 100

-Title は作成するリストの名前。
-Url は作成するリストのディレクトリ。
-Template は使用するリストテンプレートの値を記載しています。
100 だと、カスタムリスト(GenericList)を利用するということになります。

その他のテンプレートはこちらを参照。

docs.microsoft.com

無事指定のSharePoint サイトにリストが作成できたかと思います。

おわりに

もし認識誤っている箇所などありましたらご指摘いただけますと助かります。


スポンサードリンク