Thursday 13 June 2013

Configure Search Scopes and Site Collection Display Groups with PowerShell

Note for myself again.

I wanted to create search scope which returned results from a specific area in my SharePoint site collection. I also wanted this scope to be available in the site collection's "Scopes drop down".

This code did the trick

$createdScope = New-SPEnterpriseSearchQueryScope -Name "Specific area" -Description "Project sites" -SearchApplication $searchapp -DisplayInAdminUI $true $rule = New-SPEnterpriseSearchQueryScopeRule -RuleType "Url" -Url "http://portal" -MatchingString "http://portal/SpecificArea" -FilterBehavior "Require" -UrlScopeRuleType "Folder" -scope $createdScope $Site = Get-SPSite -Identity http://portal $searchContext = [Microsoft.Office.Server.Search.Administration.SearchContext]::GetContext($Site) $scopes = new-Object Microsoft.Office.Server.Search.Administration.Scopes($searchContext) $displayGroup = $scopes.GetDisplayGroup("http://portal", "Search Dropdown") $displayGroup.Add($scopes.GetSharedScope("Specific area")) $displayGroup.Update()

This script was created based on the following posts so thanks the authors for pointing me in the right direction:


  1. Part of this script will fail, based on whether or not you have already visited the scope settings page in the site collection. See here for more details:

  2. A good point Richard. Yes it does rely on you having gone to the Scope settings page.