Oh! 365 blog

主に SPO や Teams に関する情報を発信しています。

SharePoint Online の PnP PowerShell サンプル (たくさんのリスト アイテムを作成)

以前 SharePoint Online 管理シェルで、テナント管理の観点で使うコマンドの一覧を記事にしましたが、今回は検証環境づくりでよく使うものをまとていきます。
CSOM でしか対応できない場合を除いて、基本的には PnP のコマンドを使っています。

今回はたくさんのアイテムが存在するリストを作成するサンプルです。作成したビューがリストビューのしきい値に抵触しないかなど、主にビューの検証をしたいときに、5000 件、20000 件などのたくさんのアイテムが存在するリストで動作検証をしたいときがあるかと思います。そういう時にこのサンプルを実行して置けば、簡単に環境が出来上がります。実行する時間帯やサーバーの負荷で前後する可能性があるため、あくまで参考値となりますが以前テスト用に 50000 件のアイテムを作成した際は 30 分程度で作成できました。

注意点
これらは開発環境でたくさんアイテムや列を作って動作確認をしたい場合等を想定してます。
短時間に繰り返しサーバーに対して要求を行うとリクエストがブロックされたり調整されたりする可能性があるので、あくまで検証用途での使用を想定している点にはご留意ください。

たくさんのアイテムを作成する

# 既存のサイトに接続
Connect-PnPOnline -Url <strong>https://tenant.sharepoint.com/sites/testsite</strong> -Interactive

# カスタムリストを作成
New-PnPList -Title <strong>"LargeCustomList" </strong>-Url <strong>lists/largecustomlist</strong> -Template GenericList

# 作成したリストに 20000 アイテムを作成
$batch = New-PnPBatch

for($i=1; $i -lt 20000; $i++)
{
    Add-PnPListItem -List <strong>"LargeCustomList" </strong>-Values @{"Title" = "Test Item$($i)"; } -Batch $batch
}
Invoke-PnPBatch -Batch $batch

※ サイトの URL や リスト名、リスト URL 等は自由に置き換えてください。

関連情報
PnP PowerShell を使用して繰り返し処理する際、使用するコマンドが Batch に対応している場合、サーバーの負荷を軽減するために Batch を使用することが推奨されています。サーバー側への要求数が減るので、スロットリングのリスクや、サーバーの負荷を高めるリスクを軽減する効果が期待できます。

pnp.github.io

その他のコマンドは以下です。

New-PnPList (PnP.Powershell) | Microsoft Docs
New-PnPBatch (PnP.Powershell) | Microsoft Docs
Add-PnPListItem (PnP.Powershell) | Microsoft Docs

同じように PnP のコマンドを使えばたくさんのアイテムを作成しつつ、カスタムの列、カスタムの値など色んなバリエーションで環境を作ることが出来ます。
普段は必要な時にスクリプトを作成したものは使い捨てることが多いですが、昔使ったスクリプトが役立った機会もあるので、手元にストックしているものを記事にしていきます。
もしこういうサンプルがあったらいいなというものがあれば是非コメントいただければ幸いです。