2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【SharePoint】PnP.PowerShellだけでアプリの設定がどこまでできるか - リスト編

Last updated at Posted at 2023-11-29

こんにちは!
M365(特にSharePoint,Power Automate,Power Apps,Teams)に関する記事やちょっとした小ネタなどをご紹介していきます。

はじめに

検証テナントで作成したSharePointサイトやリストやライブラリを別の環境に移植したいとき、GUIで頑張る方法、移行ツールを使う方法、PowerShellでサイトテンプレートやアプリの情報を抽出して展開する方法など、やり方は色々あると思います。

今回は、PnP.PowerShellコマンドのみを利用してリスト/ライブラリの作成・設定から、列、ビューの設定などをどこまで実装できるかを検証してみましたので、シリーズ化してお届けしたいと思います。

初回はカスタムリストの作成と設定に関する内容をまとめました。
主によく設計で利用しそうな項目をピックアップしているため、網羅性は十分ではないかと思いますが、ご了承いただけますと幸いです。

検証環境

・Windows PowerShellバージョン:5.1
・PnP.PowerShellモジュール:1.12.0
・M365ライセンス:Office 365 E1

検証内容

<前提>
・SharePointサイトが作成済みであること(今回はモダンチームサイトを利用)
・PnP.PowerShellモジュールがインストール済みであること

PnP.PowerShellモジュールのインストール、サイトへの接続方法は、以下のサイトを参照ください。
SharePoint サイトのデザイン - PnP PowerShell コマンドレット

リストの作成と設定

リストの新規作成、設定変更ではそれぞれ「New-PnPList」、「Set-PnPList」コマンドを利用します。
それぞれのコマンドで指定出来るオプション、指定出来ないオプションをカテゴリ別に表にまとめました。「New-PnPList」で指定出来ないものは、リスト作成後に「Set-PnPList」で追加設定を行う必要があります。

New-PnPListコマンドレット
Set-PnPListコマンドレット

①リスト名、説明、ナビゲーションの列挙

< 設定画面(GUI)>
image.png
image.png

設定項目1 設定項目2 New-PnPList Set-PnPList
名前と説明 名前
Title

Title
説明 ×
Description
ナビゲーション このリストをサイド
リンク バーに表示する

OnQuickLaunch
×
その他 内部名(Webアドレス)
URL

Path
アプリの種類
Template
(GenericList,DocumentLibrary
など)
×

表の見方は以下の通りです。
・該当列のコマンドで指定出来る場合は「○」、出来ないものは「×」となります。
・○の下に記載している単語は、指定するオプション名となります。
※コマンド実行例も併せてご確認ください。

# New-PnPList 実行例
New-PnPList -Title "検証用リスト01" -Url "Lists/testList01" -Template GenericList -OnQuickLaunch

# Set-PnPList 実行例
Set-PnPList -Identity "検証用リスト01" -Title "検証用リスト02" -Path "Lists/testList02" -Description "検証用のリストです"

②バージョン設定(リストの場合)

< 設定画面(GUI)>
image.png

設定項目1 設定項目2 New-PnPList Set-PnPList
コンテンツの承認 承認を必須にする ×
EnableModeration
アイテムの
バージョン履歴
編集するたびに
バージョンを作成する

EnableVersioning

EnableVersioning
次の数のバージョンを保存 ×
MajorVersions
次の数の承認済み
バージョンの下書きを保存
× ×
※1 ※2
下書きアイテムのセキュリティ
※2
下書きアイテムを
表示できるユーザー
×
DraftVersionVisibility
(Approver,Author,Reader)

※1 コマンド自体は正常に実行されますが、パラメータには反映されませんでした。
※2 コンテンツの承認が無効の場合は、GUI上でグレーアウトとなります。

③詳細設定(リストの場合)

< 設定画面(GUI)>
image.png

設定項目1 設定項目2 New-PnPList Set-PnPList
コンテンツタイプ コンテンツタイプの管理を許可
EnableContentTypes

EnableContentTypes
アイテムごとの権限 読み取りアクセス権 ×
ReadSecurity
(AllUsersReadAccess,
AllUsersReadAccessOnItemsTheyCreate)
作成/編集のアクセス権 ×
WriteSecurity
(WriteAllItems,WriteOnlyMyItems,WriteNoItems)
添付ファイル アイテムへのファイル添付 ×
EnableAttachments
コメント アイテムへのコメント許可 ×
DisableCommenting
※1
フォルダー [新しいフォルダー] の表示 ×
EnableFolderCreation
検索 リストアイテムの検索結果表示 ×
NoCrawl
既定以外のビューの
インデックス化
既定以外のビューの検索結果表示 ×
CrawlNonDefaultViews
※2
リストのインデックスの再作成 × 不明
オフライン クライアントの
使用制限
ダウンロードの許可 × ×
ExcludeFromOfflineClient
※3
クイック プロパティの編集 [クイック編集]と[詳細] の利用 ×
DisableGridEditing
ダイアログ ボックス × 不明
インデックスの自動管理 × 不明
リストの表示 ×
ListExperience
(Auto,NewExperience,ClassicExperience)

※1 コマンド実行時にエラーとなり、設定不可。後述のコマンド処理により設定が可能。
※2 コマンド自体は正常に実行されますが、パラメータには反映されませんでした。後述のコマンド処理により設定が可能。
※3 オプション名は記載のものと推測されますが、コマンドを実行してもパラメータに反映されませんでした。後述のコマンド処理でも同様に反映不可となりました。

上記の※1、※2で記載した別方法によるコマンド処理は以下となります。この処理を利用することで、Set-PnPListで直接指定が出来ないものも、一部設定が可能でした。

$list = Get-PnPList -Identity "リストの表示名"

# ※1(コメント)の場合
$list.DisableCommenting = $false

# ※2(既定のビュー以外のインデックス化)の場合
$list.CrawlNonDefaultViews = $false

$list.Update()
Invoke-PnPQuery

【参考】モダンリストとライブラリのエクスペリエンスをオプトアウトする

④リストの権限

< 設定画面(GUI)>
image.png

設定項目1 設定項目2 New-PnPList Set-PnPList
このリストに対する権限 権限の継承/中止 ×
(BreakRoleInheritance [中止]),
ResetRoleInheritance [継承])

最後に

「New-PnPList」で指定出来るものは限りがありましたが、「Set-PnPList」では主要な設定項目が思っていたよりもカバー出来た印象でした。
一度コマンドセットを作っておけば、色々と使いまわしが出来そうなので、引き続き深堀していきたいと思います。

関連記事

第2回:【SharePoint】PnP.PowerShellだけでアプリの設定がどこまでできるか - ライブラリ編

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?