In the previous article, we saw what is a Managed Property and a brief background about the naming conventions.
In this article, let us see how to create Managed Property and Map it to the Crawled Property in SharePoint 2013 using PowerShell.
The script is as follows.
#Add PSSnappin
Add-PSSnapin "Microsoft.SharePoint.PowerShell"
$LogTime = Get-Date -Format yyyy-MM-dd_hh-mm
$LogFile = ".Patch-$LogTime.rtf"
#Set the Execution Location
$scriptBase = split-path $SCRIPT:MyInvocation.MyCommand.Path -parent
Set-Location $scriptBase
$path = Get-Location
#start-transcript $logfile
#remove the Log files before execution
if (test-path "$pathExistingManagedProp.txt")
{
remove-item "$pathExistingManagedProp.txt"
}
if (test-path "$pathCrawledPropErrorLogs.txt")
{
remove-item "$pathCrawledPropErrorLogs.txt"
}
# Get the Input CSV File
$csvfile = "$pathManagedProperties.csv"
#Get the Search Service Application
$searchapp = Get-SPEnterpriseSearchServiceApplication
#Iterate through the CSV file
Import-csv $csvfile | where {
#Get the Search SErvice Application
$cat = Get-SPEnterpriseSearchMetadataCategory –SearchApplication $searchapp –Identity $_.Category
#Get the Crawled Property First
$cp = Get-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $searchapp -name $_.CrawledPropertyName -Category $cat -ea silentlycontinue
#If the Crawled Property is not null, then go inside
if ($cp)
{
# Check whether Managed Property already exists
$property = Get-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $searchapp -Identity $_.ManagedPropertyName -ea silentlycontinue
if ($property)
{
Write-Host -f yellow "Cannot create managed property" $_.ManagedPropertyName "because it already exists"
$ExistingManagedProp = "Cannot create managed property " + $_.ManagedPropertyName + " because it already exists" | out-file "$pathExistingManagedProp.txt" -append
}
else
{
# If already not there, then create Managed Property
New-SPEnterpriseSearchMetadataManagedProperty -Name $_.ManagedPropertyName -SearchApplication $searchapp -Type $_.Type -Description $_.Description
#Get the managed Property which Just now, we created
$mp = Get-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $searchapp -Identity $_.ManagedPropertyName
#Map the Managed Property with the Corresponding Crawled Property
New-SPEnterpriseSearchMetadataMapping -SearchApplication $searchapp -ManagedProperty $mp –CrawledProperty $cp
}
}
else
{
Write-Host -f Yellow "The specified crawled property " $_.CrawledPropertyName " does not exists... Please check whether you have given valid crawled property name"
$a = "The specified crawled property " + $_.CrawledPropertyName + " does not exists... Please check whether you have given valid crawled property name"| out-file "$pathCrawledPropErrorLogs.txt" -append
}
}
#stop-transcript
Happy Coding.
Sathish Nadarajan.
Leave a comment