- はじめに
- SharePointPnPPowerShellOnline を利用している場合
- PnP モジュールのインストール
- PnP モジュールを利用してSharePoint Online へアクセスしてみる
- 自身のテナントにPnP Manager Shell をインストールする
- PnP モジュールを利用して指定のサイトにリストを作成してみる
- おわりに
はじめに
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 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 が上がっていた。
このissues の中にて以下のようにコメントされている。
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)を利用するということになります。
その他のテンプレートはこちらを参照。
無事指定のSharePoint サイトにリストが作成できたかと思います。
おわりに
もし認識誤っている箇所などありましたらご指摘いただけますと助かります。