Create and Remove Search Scope function

10/01/2012 20:41

#input parameters

$searchAppName="Enterprise Search Service Application"

#calling function
CCSearchScope -siteUrl $siteUrl -searchAppName $searchAppName

function CCSearchScope

#set default value for search application
if($searchAppName -eq $null -or $searchAppName -eq '')
    $searchAppName = 'Enterprise Search Service Application'
#important- without / at the end
#$siteUrl = 'https://localhost/sites/newsitecollection8'
#set default value for site collection
if($SiteUrl -eq $null -or $SiteUrl -eq '')
    $siteUrl = "https://localhost/sites/test"

#computed urls
$server=GetServerFromUrl $siteUrl
$site=GetSiteFromUrl $siteUrl

#scope parameters
$scopeUrl= $server + $site+"/CategoryCards/Pages"
$scopeName="category cards_fromPS"
$scopeDescription="Category Card library"

 # check to ensure Microsoft.SharePoint.PowerShell is loaded
    $snapin=Get-PSSnapin | Where-Object {
       $_.Name -eq 'Microsoft.SharePoint.Powershell'}
       if ($snapin -eq $null) {
       Write-Host "Loading SharePoint Powershell Snapin"
       Add-PSSnapin "Microsoft.SharePoint.Powershell"

$searchapp = Get-SPEnterpriseSearchServiceApplication $searchAppName
$category = Get-SPEnterpriseSearchMetadataCategory –Identity SharePoint -SearchApplication $searchapp

#write-host $category

#if scope exists, delete and create new
$scope = Get-SPEnterpriseSearchQueryScope -Identity $scopeName -SearchApplication $searchapp -ea 0
if($scope -eq $null) #If scope doesn't exis, create
    write-host $scopeName " scope doesn't exist in " $searchAppName ", creating..."
    $searchapp | New-SPEnterpriseSearchQueryScope -Name $scopeName -Description $scopeDescription -DisplayInAdminUI $true
    $scope = Get-SPEnterpriseSearchQueryScope -Identity $scopeName -SearchApplication $searchapp
    $scopeRule = New-SPEnterpriseSearchQueryScopeRule  -RuleType Url -MatchingString $scopeUrl -UrlScopeRuleType "Folder" -FilterBehavior "Include" -Url $server -Scope $scope
     write-host $scopeName " scope has been successfuly created in " $searchAppName "."
else #if scope exists, delete
    write-host $scopeName " scope already exist in " $searchAppName ", deleting..."
    Remove-SPEnterpriseSearchQueryScope -Identity $scopeName -SearchApplication $searchapp -Confirm:$false
    write-host $scopeName " scope has been successfuly removed from " $searchAppName "."
}  #end function

function GetServerFromUrl(
$server=$url.substring(0, $short.IndexOf('/')+$first+2)
return $server

function GetSiteFromUrl(
$site=$short.substring($index+1, $short.length-$index-1)
return $site