[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
}
# 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
Post a Comment