Skip to main content

Create Search Scope and apply ruele using power shell also define Search Setting to Site Collection

[string]$searchSiteName = "Search"

# Creates the search scope on site so it shows on the dropdown
function CreateSearchScope([string] $siteURL){

    # Variables for Site
    [string]$searchServiceApplicationName = "Search Service Application"

    [string]$adminServiceName = "SPAdmeinV4"
    [string]$lmsContentTypeTemplateID = "STS_ListItem_10001"
    [string]$searchDropDownValue= "Search Dropdown"
    [string]$scopeName = "LMS Search"

    # Gets the Search Service Application Object
    Write-Host "Get-SPEnterPriseSearchServiceApplication" -foregroundcolor green
    $ssa = Get-SPEnterPriseSearchServiceApplication -Identity $searchServiceApplicationName

    # Get the root web
    Write-Host "Get the root web." -foregroundcolor green
    $site = New-Object Microsoft.SharePoint.SPSite($siteURL)

    # Gets the scope
    Write-Host "Get-SPEnterpriseSearchQueryScope" -foregroundcolor green
    $scope = Get-SPEnterpriseSearchQueryScope -Identity $scopeName -SearchApplication $ssa -ea "silentlycontinue"

    Write-Host "Create a scope object" -foregroundcolor green
    $existingScope = $null
    if($scope -eq $null)
    {
        Write-Host "Create a scope New-SPEnterpriseSearchQueryScope" -foregroundcolor green
        $existingScope = New-SPEnterpriseSearchQueryScope -Name $scopeName -Description "Searches LMS Course Content Type Lists only." -SearchApplication $ssa -DisplayInAdminUI $true
    }
    else
    {
        Write-Host "Gets the existing scope Get-SPEnterpriseSearchQueryScope" -foregroundcolor green
        $existingScope = Get-SPEnterpriseSearchQueryScope -Identity $scopeName -SearchApplication $ssa -ea "silentlycontinue"
    }

    Write-Host "Gets all scope rules."
    $allScopeRules = Get-SPEnterpriseSearchQueryScopeRule -SearchApplication $searchServiceApplicationName -Scope $scopeName
  
    #Checks the Rule if already exists
    $checkRule = $allScopeRules | Where-Object { $_.RuleType -eq "Url" -and $_.MatchingString -eq "$siteURL/" }
  
    ######$checkRule | ForEach-Object { Write-Host "ID : " $_.ID ", Filter Behaviour : " $_.FilterBehaviour ", LogPrefix : " $_.LogPrefix ", Property : " $_.Property ", RuleType : " $_.RuleType ", Value : " $_.Value }
  
    if( $checkRule -ne $null )
    {
        Write-Host "Rule existed for URL - New-SPEnterpriseSearchQueryScope" -foregroundcolor green
    }
    else
    {
        Write-Host "Create URL Rule - New-SPEnterpriseSearchQueryScope" -foregroundcolor green
        $rule = New-SPEnterpriseSearchQueryScopeRule -RuleType "Url" -Url $siteURL -MatchingString "$siteURL/" -FilterBehavior "Include" -UrlScopeRuleType "Folder" -scope $existingScope
    }

    #Checks the Rule if already exists
    $checkRule = $allScopeRules | Where-Object { $_.RuleType -eq "PropertyQuery" -and $_.Value -eq $lmsContentTypeTemplateID }
  
    ######$checkRule | ForEach-Object { Write-Host "ID : " $_.ID ", Filter Behaviour : " $_.FilterBehaviour ", LogPrefix : " $_.LogPrefix ", Property : " $_.Property ", RuleType : " $_.RuleType ", Value : " $_.Value }

    if( $checkRule -ne $null )
    {
        Write-Host "Rule existed for Property type - New-SPEnterpriseSearchQueryScope" -foregroundcolor green
    }
    else
    {
        Write-Host "Create Content Type - New-SPEnterpriseSearchQueryScope" -foregroundcolor green
        $rule = New-SPEnterpriseSearchQueryScopeRule -RuleType PropertyQuery -ManagedProperty "contentclass" -PropertyValue $lmsContentTypeTemplateID -FilterBehavior "Require" -url $siteURL -scope $existingScope -SearchApplication $ssa
    }


    Write-Host "Start applying settings to the web." -foregroundcolor green
    $rootWeb = $site.RootWeb
    $rootWeb.AllowUnsafeUpdates = $true
    $rootWeb.AllProperties["SRCH_ENH_FTR_URL"] = "/" + $searchSiteName
    $rootWeb.AllProperties["SRCH_SITE_DROPDOWN_MODE"] = "ShowDD"
    $rootWeb.AllProperties["SRCH_TRAGET_RESULTS_PAGE"] ="/_layouts/OSSSearchResults.aspx"
    $rootWeb.update()
    Write-Host "Finished applying settings to the web." -foregroundcolor green
  

    Write-Host "Start Calling SearchScopeGroup Ps1 for updating group" -foregroundcolor green
    .$scriptDir"\"UpdateSearchScopeGroup.ps1
  
    write-host "Loading Scripts"
    Add-Type -ReferencedAssemblies $Assem -TypeDefinition $Source -Language CSharpVersion3  -ErrorAction Stop
    write-host "Call Methods of C# code"-foregroundcolor green
    [gp.sp.LMSSearchScopeGroup.GPSearchScopeGroup]::UpdateGPSearchScopeGroup($siteURL)
  
    Write-Host "Finished Updating Search Dropdown and set LMS Search To Default" -foregroundcolor green


  
  }

Comments

Popular posts from this blog

How to deal with SharePoint 2010 exception "An exception occurred when trying to issue security token: The server was unable to process the request due to an internal error"

Scenario: You receive the below exception when you try to logon to a site that has been configured to use Claims Based Authentication with a custom membership provider using FBA credentials: Event ID from Event Log  - 8306 An exception occurred when trying to issue security token: The server was unable to process the request due to an internal error.  For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.. Explanation: This error started to appear in our QA environment which does not have Visual Studio installed. I have tried starting the service "Claims to Windows Token Service" but that did not help either. I have made sure that all config...

Cascading drop down column in a SharePoint List

This article will show how to use codeplex project to achieve Cascading drop down columns in SharePoint list. This article will show how to achieve parent child relationship in column of SharePoint list.   Objective This article will show how to use codeplex project to achieve Cascading drop down columns in SharePoint list. This article will show how to achieve parent child relationship in column of SharePoint list. Step 1 Download the project from codeplex . Choose WSP file to download. To download the project Click here Step 2 After downloading the WSP add the solution using STSADM command. Navigate to BIN folder and add the solution. Command C:\Program Files\Common Files\microsoft shared\Web Server Extensions\12\BIN> stsa dm -o addsolution -filename c:\Stoneshare.CascadingDropDown.WithFilter.wsp Step 3 Open Central ADMIN and deploy solution. Navigate to Operation -> Global Configuration -> Solution Management. Select the Global Deployment option. St...

Migrating from Skype for Business to Microsoft Teams: A Step-by-Step Guide

Do you still use Skype for Business to meet the communication and collaboration needs of your business? If so, now is the perfect time to think about switching to Microsoft Teams, a cutting-edge platform with cutting-edge capabilities and seamless connectivity with other Microsoft services. But if you're unfamiliar with the procedure, switching to a new platform can seem like a difficult task. I'll walk you through the process of switching from Skype for Business to Microsoft Teams in this article. Plan the migration in Step 1 You must make a plan before you start the relocation procedure. Set a deadline, make a list of all the Skype for Business capabilities you presently use, and choose whether to migrate gradually or all at once. Step 2: Set up your surroundings. Make sure your network and infrastructure fulfil Microsoft Teams' standards. Upgrades to your hardware, software, and licences might be necessary. Additionally, confirm that you have the right permissions to ca...