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.
![CrtScpSil1.gif]()
On the Quick Launch Menu, go to Queries and Results then click on Scopes.
![CrtScpSil2.gif]()
You could be able to see the Scopes.
![CrtScpSil3.gif]()
Click on the Scope to which Scope Rule has to be added.
Click on Add New Rule link to add the new scope rule.
![CrtScpSil4.gif]()
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.
![CrtScpSil5.gif]()
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:
![CrtScpSil6.gif]()
And in the Central Administration you could see the newly added Content Source
Scope Rule as shown in the following
![CrtScpSil7.gif]()