In this article we will be seeing how to create a Content Source Scope Rule in
SharePoint 2010 Enterprise Search Service Application using PowerShell.
Content Source Scope Rule creation in SharePoint 2010
We can create a Content Source Scope Rule in SharePoint 2010 Enterprise Search
Service Application from Central Administration.
Go to Central Administration => Application Management => Manage Service
Applications => Enterprise Search Service Application.
On the Quick Launch Menu, go to Queries and Results then click on Scopes.
You could be able to see the Scopes.
Click on the Scope to which Scope Rule has to be added.
Click on Add New Rule link to add the new scope rule.
In the Scope Rule Type section, select Content Source.
In the Content Sources section, select the Content Source that has to be added
to the scope rule.
Click on Ok.
Automating the Content Source Scope Rule creation in SharePoint 2010
Here we will be seeing about automating the Content Source Scope Rule creation
using powershell script.
Steps Involved:
- Create the input XML file which contains
the inputs for Content Source Scope Rule creation.
- Create ps1 file which contains the script
for Content Source Scope Rule creation.
CreateContentSourceScopeRules.xml
<?xml
version="1.0"
encoding="utf-8"
?>
<ScopeRules>
<SSAName>EnterPrise
Search Service Application</SSAName>
<ScopeURL>http://server06:8080/</ScopeURL>
<Rule
ScopeName="Sample1"
ContentSourceName="Sample1
SharePoint Sites" />
<Rule
ScopeName="Sample2"
ContentSourceName="Sample2
SharePoint Sites" />
<Rule
ScopeName="Sample3"
ContentSourceName="Sample3
SharePoint Sites" />
</ScopeRules>
CreateContentSourceScopeRules.ps1
#----------------Get
the xml file---------------------------------------------------------------
[xml]$xmlData=Get-Content
"C:\Users\Desktop\ContentSources\CreateContentSourceScopeRules.xml"
#----------------Create
Content Source Scope Rule function---------------------------------------------
Function
CreateContentSourceScopeRule()
{
$flag=0
$ssa=Get-SPEnterPriseSearchServiceApplication
-Identity
$xmlData.SSAName
$ssaContent
=
new-object
Microsoft.Office.Server.Search.Administration.Content($ssa)
$scopeCollection=Get-SPEnterpriseSearchQueryScope
-SearchApplication
$ssa
$xmlData.ScopeRules.Rule
|
ForEach-Object
{
$ScopeName=$_.ScopeName
$contentSourceName=$_.ContentSourceName
$scope=Get-SPEnterpriseSearchQueryScope
-SearchApplication
$ssa
|
Where-Object
{$_.Name
-eq
$ScopeName}
if($scope
-ne
$null)
{
foreach
($availableContentSource
in
$ssaContent.ContentSources)
{
if
($availablecontentSource.Name.ToString()
-eq
$contentSourceName)
{
$flag=1
break
}
}
if($flag
-eq
1)
{
$ScopeRules=Get-SPEnterpriseSearchQueryScopeRule
-Scope
$scope
|
Where-Object
{$_.Value
-eq
$contentSourceName}
if($scopeRuleFlag
-ne
$null)
{
write-host
-f
Yellow
"Can't add or modify scope rule. A rule with the same parameters already exists
in this
scope"
}
else
{
write-host
-f
Magenta
Creating
Content
Source
Scope
Rule
New-SPEnterpriseSearchQueryScopeRule -RuleType
PropertyQuery -ManagedProperty ContentSource -PropertyValue
$contentSourceName
-FilterBehavior Include -URL
$xmldata.ScopeRules.ScopeURL
-scope
$scope
-SearchApplication
$ssa
write-host
-f
Green
Content
Source
Scope
Rule
is
created
successfully
to
$ScopeName
scope
}
}
else
{
write-host
-f
Yellow
$contentSourceName
content
source
does
not
exists
}
}
else
{
write-host
-f
yellow
$ScopeName
scope
does
not
exists
}
}
}
#----------------Calling
the function---------------------------------------------
CreateContentSourceScopeRule
Run the Script:
-
Go to Start.
-
Click on All Programs.
-
Click on Microsoft SharePoint 2010 Products
and then click on SharePoint 2010 Management Shell.
-
Run the C:\Users\Desktop\ContentSources\CreateContentSourceScopeRules.ps1
Output:
And in the Central Administration you could see the newly added Content Source
Scope Rule as shown in the following