こんにちは!
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コマンドレット
①リスト名、説明、ナビゲーションの列挙
設定項目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 "検証用のリストです"
②バージョン設定(リストの場合)
設定項目1 | 設定項目2 | New-PnPList | Set-PnPList |
---|---|---|---|
コンテンツの承認 | 承認を必須にする | × | ○ EnableModeration |
アイテムの バージョン履歴 |
編集するたびに バージョンを作成する |
○ EnableVersioning |
○ EnableVersioning |
次の数のバージョンを保存 | × | ○ MajorVersions |
|
次の数の承認済み バージョンの下書きを保存 |
× | × ※1 ※2 |
|
下書きアイテムのセキュリティ ※2 |
下書きアイテムを 表示できるユーザー |
× | ○ DraftVersionVisibility (Approver,Author,Reader) |
※1 コマンド自体は正常に実行されますが、パラメータには反映されませんでした。
※2 コンテンツの承認が無効の場合は、GUI上でグレーアウトとなります。
③詳細設定(リストの場合)
設定項目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
④リストの権限
設定項目1 | 設定項目2 | New-PnPList | Set-PnPList |
---|---|---|---|
このリストに対する権限 | 権限の継承/中止 | × | ○ (BreakRoleInheritance [中止]), ResetRoleInheritance [継承]) |
最後に
「New-PnPList」で指定出来るものは限りがありましたが、「Set-PnPList」では主要な設定項目が思っていたよりもカバー出来た印象でした。
一度コマンドセットを作っておけば、色々と使いまわしが出来そうなので、引き続き深堀していきたいと思います。