🫥

PnP PowerShellでアクティブ化されたサイトコレクションの機能を取得する

2023/12/18に公開

概要

PnP PowerShellでSharePoint Onlineのサイトコレクションの機能を取得する時に困ったことなど
↓「ここを取得するんだろ、まかせとけ」と言ったことから始まる検証の一部である。

基本情報

PnP PowerShellのGet-PnPFeatureコマンドを実行することで、サイトコレクションの機能のうちアクティブ化した機能を取得することができる。

Get-PnPFeature -scope site

※既定ではScopeがwebになっており、この場合「サイト機能の管理」を取得するので注意。

コマンド実行時に判明したこと

全ての機能が非アクティブ化状態でも値は返ってくる

サイトコレクションの機能が全て既定で非アクティブ化されているサイトテンプレートであるコミュニケーションサイトを対象に、既定の状態でGet-PnPFeatureコマンドを実行すると下記の結果になる。

DisplayName                            DefinitionId
-----------                            ------------
TenantSitesList                        3019c9b4-e371-438d-98f6-0a08c34d06eb
GlobalHold                             2a6bf8e8-10b5-42f2-9d3e-267dfb0de8d4
CTypes                                 695b6570-a48b-4a8e-8ea5-26ea7fc1d162
ShareWithEveryone                      10f73b29-5779-46b3-85a8-4817a6e9a6c2
Fields                                 ca7bd552-10b1-4563-85b9-5ed1d39c962a
SetFileVersionPolicyAsync              371a9b45-6923-41d8-9f5d-6c4506e51b2e
VisioWebAccess                         9fec40ea-a949-407d-be09-6cba26470a0c
spoguestintegration                    9836d446-3785-4579-8480-a27d5c965b19
SearchWebParts                         eaf6a128-0482-4f71-9a2f-b1c650680e77
IPFSSiteFeatures                       c88c4ff1-dbf5-4649-ad9f-c6c426ebcbf5
SitePageResources                      ff77ac56-88d0-4147-b865-e84f5f03fc42
TaxonomyFieldAdded                     73ef14b1-13a9-416b-a9b5-ececa2b0604c

サイトコレクションの機能:DefinitionId = 1:n

わかりやすく言うと、「サイトコレクションの機能をひとつアクティブ化したからといって、Get-PnPFeatureコマンドで取得できるDisplayName/DefinitionIdがひとつ増える、とは限らない」のである。
例として、コミュニケーションサイトで「発行承認のワークフロー」機能のみをアクティブ化した場合、下記の結果になる。「ReviewPublishingSPD~」他、ずらっと並ぶ。

DisplayName                            DefinitionId
-----------                            ------------
TenantSitesList                        3019c9b4-e371-438d-98f6-0a08c34d06eb
GlobalHold                             2a6bf8e8-10b5-42f2-9d3e-267dfb0de8d4
CTypes                                 695b6570-a48b-4a8e-8ea5-26ea7fc1d162
ShareWithEveryone                      10f73b29-5779-46b3-85a8-4817a6e9a6c2
Fields                                 ca7bd552-10b1-4563-85b9-5ed1d39c962a
ReviewPublishingSPD1025                19f5f68e-1b92-4a02-b04d-61810ead0401
ReviewPublishingSPD1026                19f5f68e-1b92-4a02-b04d-61810ead0402
ReviewPublishingSPD1027                19f5f68e-1b92-4a02-b04d-61810ead0403
ReviewPublishingSPD1028                19f5f68e-1b92-4a02-b04d-61810ead0404
ReviewPublishingSPD1029                19f5f68e-1b92-4a02-b04d-61810ead0405
ReviewPublishingSPD1030                19f5f68e-1b92-4a02-b04d-61810ead0406
ReviewPublishingSPD1031                19f5f68e-1b92-4a02-b04d-61810ead0407
ReviewPublishingSPD1032                19f5f68e-1b92-4a02-b04d-61810ead0408
ReviewPublishingSPD1033                19f5f68e-1b92-4a02-b04d-61810ead0409
ReviewPublishingSPD1035                19f5f68e-1b92-4a02-b04d-61810ead040b
ReviewPublishingSPD1036                19f5f68e-1b92-4a02-b04d-61810ead040c
ReviewPublishingSPD1037                19f5f68e-1b92-4a02-b04d-61810ead040d
ReviewPublishingSPD1038                19f5f68e-1b92-4a02-b04d-61810ead040e
ReviewPublishingSPD1040                19f5f68e-1b92-4a02-b04d-61810ead0410
ReviewPublishingSPD1041                19f5f68e-1b92-4a02-b04d-61810ead0411
ReviewPublishingSPD1042                19f5f68e-1b92-4a02-b04d-61810ead0412
ReviewPublishingSPD1043                19f5f68e-1b92-4a02-b04d-61810ead0413
ReviewPublishingSPD1044                19f5f68e-1b92-4a02-b04d-61810ead0414
ReviewPublishingSPD1045                19f5f68e-1b92-4a02-b04d-61810ead0415
ReviewPublishingSPD1046                19f5f68e-1b92-4a02-b04d-61810ead0416
ReviewPublishingSPD1048                19f5f68e-1b92-4a02-b04d-61810ead0418
ReviewPublishingSPD1049                19f5f68e-1b92-4a02-b04d-61810ead0419
ReviewPublishingSPD1050                19f5f68e-1b92-4a02-b04d-61810ead041a
ReviewPublishingSPD1051                19f5f68e-1b92-4a02-b04d-61810ead041b
ReviewPublishingSPD1053                19f5f68e-1b92-4a02-b04d-61810ead041d
ReviewPublishingSPD1054                19f5f68e-1b92-4a02-b04d-61810ead041e
ReviewPublishingSPD1055                19f5f68e-1b92-4a02-b04d-61810ead041f
ReviewPublishingSPD1057                19f5f68e-1b92-4a02-b04d-61810ead0421
ReviewPublishingSPD1058                19f5f68e-1b92-4a02-b04d-61810ead0422
ReviewPublishingSPD1060                19f5f68e-1b92-4a02-b04d-61810ead0424
ReviewPublishingSPD1061                19f5f68e-1b92-4a02-b04d-61810ead0425
ReviewPublishingSPD1062                19f5f68e-1b92-4a02-b04d-61810ead0426
ReviewPublishingSPD1063                19f5f68e-1b92-4a02-b04d-61810ead0427
ReviewPublishingSPD1069                19f5f68e-1b92-4a02-b04d-61810ead042d
ReviewPublishingSPD1081                19f5f68e-1b92-4a02-b04d-61810ead0439
ReviewPublishingSPD1087                19f5f68e-1b92-4a02-b04d-61810ead043f
ReviewPublishingSPD1110                19f5f68e-1b92-4a02-b04d-61810ead0456
ReviewPublishingSPD2052                19f5f68e-1b92-4a02-b04d-61810ead0804
ReviewPublishingSPD2070                19f5f68e-1b92-4a02-b04d-61810ead0816
ReviewPublishingSPD2074                19f5f68e-1b92-4a02-b04d-61810ead081a
ReviewPublishingSPD3082                19f5f68e-1b92-4a02-b04d-61810ead0c0a
SetFileVersionPolicyAsync              371a9b45-6923-41d8-9f5d-6c4506e51b2e
VisioWebAccess                         9fec40ea-a949-407d-be09-6cba26470a0c
OffWFCommon                            c9c9515d-e4e2-4001-9050-74f980f93160
spoguestintegration                    9836d446-3785-4579-8480-a27d5c965b19
SearchWebParts                         eaf6a128-0482-4f71-9a2f-b1c650680e77
IPFSSiteFeatures                       c88c4ff1-dbf5-4649-ad9f-c6c426ebcbf5
SitePageResources                      ff77ac56-88d0-4147-b865-e84f5f03fc42
TaxonomyFieldAdded                     73ef14b1-13a9-416b-a9b5-ececa2b0604c
ReviewPublishingSPD                    a44d2aa3-affc-4d58-8db4-f4a3af053188

複数の機能で共有されるDisplayName/DefinitionIdが存在する

コミュニケーションサイトで「ワークフロー」機能のみをアクティブ化した場合、下記の結果になる。
「サイトコレクションの機能:DefinitionId = 1:n」の出力結果と照合すると、既定でアクティブ化されている機能を除けば、DisplayName 「OffWFCommon」が複数の機能で共有されていることがわかる。

DisplayName                            DefinitionId
-----------                            ------------
TenantSitesList                        3019c9b4-e371-438d-98f6-0a08c34d06eb
GlobalHold                             2a6bf8e8-10b5-42f2-9d3e-267dfb0de8d4
CTypes                                 695b6570-a48b-4a8e-8ea5-26ea7fc1d162
SignaturesWorkflowSPD                  c4773de6-ba70-4583-b751-2a7b1dc67e3a
SignaturesWorkflowSPD1041              a42f749f-8633-48b7-9b22-403b40190411
ShareWithEveryone                      10f73b29-5779-46b3-85a8-4817a6e9a6c2
Fields                                 ca7bd552-10b1-4563-85b9-5ed1d39c962a
SetFileVersionPolicyAsync              371a9b45-6923-41d8-9f5d-6c4506e51b2e
VisioWebAccess                         9fec40ea-a949-407d-be09-6cba26470a0c
OffWFCommon                            c9c9515d-e4e2-4001-9050-74f980f93160
Workflows                              0af5989a-3aea-4519-8ab0-85d91abe39ff
ReviewWorkflowsSPD                     b5934f65-a844-4e67-82e5-92f66aafe912
ReviewWorkflowsSPD1041                 3bc0c1e1-b7d5-4e82-afd7-9f7e59b60411
spoguestintegration                    9836d446-3785-4579-8480-a27d5c965b19
SearchWebParts                         eaf6a128-0482-4f71-9a2f-b1c650680e77
IPFSSiteFeatures                       c88c4ff1-dbf5-4649-ad9f-c6c426ebcbf5
SitePageResources                      ff77ac56-88d0-4147-b865-e84f5f03fc42
TaxonomyFieldAdded                     73ef14b1-13a9-416b-a9b5-ececa2b0604c
TranslationWorkflow                    c6561405-ea03-40a9-a57f-f25472942a22

その他確認できたこと

・サイトテンプレートやサイトコレクションの設定言語が違っても、DisplayName/DefinitionIdは共通か?
はい

・サイトテンプレートが異なっても、取得できるDisplayName/DefinitionIdは共通か?
いいえ

開発者向けサイトで何もアクティブ化していない状態で取得できる値は以下の通りであり、DisplayName「Developer」など、先述したコミュニケーションサイトとは異なるものがある。

DisplayName                            DefinitionId
-----------                            ------------
HelpCollectionRemoveDefault            232b3f94-9d6e-4ed6-8d55-04d5a44ac449
EnhancedTheming                        068bc832-4951-11dc-8314-0800200c9a66
Ratings                                915c240e-a6cc-49b8-8b2c-0bff8b553ed3
GlobalHold                             2a6bf8e8-10b5-42f2-9d3e-267dfb0de8d4
CTypes                                 695b6570-a48b-4a8e-8ea5-26ea7fc1d162
ShareWithEveryone                      10f73b29-5779-46b3-85a8-4817a6e9a6c2
Developer                              e374875e-06b6-11e0-b0fa-57f5dfd72085
Fields                                 ca7bd552-10b1-4563-85b9-5ed1d39c962a
SearchDrivenContent                    592ccb4a-9304-49ab-aab1-66638198bb58
SetFileVersionPolicyAsync              371a9b45-6923-41d8-9f5d-6c4506e51b2e
MediaWebPart                           5b79b49a-2da6-4161-95bd-7375c1995ef9
spoguestintegration                    9836d446-3785-4579-8480-a27d5c965b19
ExcelServerWebPart                     4c42ab64-55af-4c7c-986a-ac216a6e0c0e
SearchWebParts                         eaf6a128-0482-4f71-9a2f-b1c650680e77
BasicWebParts                          00bfea71-1c5e-4a24-b310-ba51c3eb7a57
IPFSSiteFeatures                       c88c4ff1-dbf5-4649-ad9f-c6c426ebcbf5
MobileExcelWebAccess                   e995e28b-9ba8-4668-9933-cf5c146d7a9f
ExcelServerSite                        3cb475e7-4e87-45eb-a1f3-db96ad7cf313
AccSrvSolutionGallery                  744b5fd3-3b09-4da6-9bd1-de18315b045d
AssetLibrary                           4bcccd62-dcaf-46dc-a7d4-e38277ef33f4
SitePageResources                      ff77ac56-88d0-4147-b865-e84f5f03fc42
TaxonomyFieldAdded                     73ef14b1-13a9-416b-a9b5-ececa2b0604c

まとめ

一目で人間にわかる内容ではない

Get-PnPFeatureは「アクティブ化された機能で利用しているDisplayName/DefinitionIdを取得できる」コマンドであり、「アクティブ化されたサイトコレクションの機能を一括取得できるということか?」という認識だと、この取得内容を見て肩透かしを食らう。
人間にもわかりやすいような「GUIと同様の見た目のCSVを出力する処理」を有したPowerShellスクリプトを開発したい場合、本記事の検証を踏まえてさらに調査が必要となる。

素直にGUIで確認した方が早い

「どの機能とDisplayName/DefinitionIdが紐づいているのか?」等の関係性はMS Learnにも記載されていない。確認する対象のサイトコレクションの数が少ないならGUI上で確認するのが良いだろう。
サイトコレクションの機能とDisplayName/DefinitionIdの紐付けはマジで疲れる。

Discussion