💻

PowerShell で SharePoint 2013 のサイトの機能と同じ一覧を取得する

2022/01/01に公開

PowerShell で サイトの機能 と同じように機能名とアクティブの状態を一覧で取得しようとしたのですが、ちょっとコツが必要だったのでメモしておきます。

機能の一覧を取得するのは Get-SPFeature コマンドレットでできるのですが、範囲を指定しない場合はインストールされているすべての機能を、範囲を指定した場合は有効になっている機能を取得します。[1] つまり、アクティブかどうかを取得するには、有効な機能の一覧に含まれるかをそれぞれチェックする必要があります。

Add-PSSnapin "Microsoft.SharePoint.PowerShell"

$url = "{{site-url}}"
$locale = 1041
$version = 15

$features = Get-SPFeature -Web $url -Limit All | Where-Object { $_.Hidden -eq $false }

Get-SPFeature -Limit All |
    Where-Object { $_.Scope -eq "Web" } |
    Where-Object { $_.CompatibilityLevel -eq $version } |
    Where-Object { $_.Hidden -eq $false } |
    ForEach-Object { [PSCustomObject]@{
        Id = $_.Id
        Title = $_.GetTitle($locale)
        IsActive = ($features | ForEach-Object { $_.Id }) -contains $_.Id
    }} |
    Sort-Object Title

サイト コレクションの機能で同じように取得したい場合は Web をそれぞれ Site に変更します。

脚注
  1. WebApplicationSiteWeb のパラメーターのこと。 ↩︎

Discussion