How to Create Managed Property in SharePoint 2013 using PowerShell


Sathish Nadarajan
SharePoint MVP
Published On :   24 Jan 2015
Visit Count
Today :  1    Total :   12239



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 "$path\ExistingManagedProp.txt")
 {
     remove-item "$path\ExistingManagedProp.txt"
 }
 
 if (test-path "$path\CrawledPropErrorLogs.txt")
 {
     remove-item "$path\CrawledPropErrorLogs.txt"
 }
 
 # Get the Input CSV File
 
 $csvfile = "$path\ManagedProperties.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 "$path\ExistingManagedProp.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 "$path\CrawledPropErrorLogs.txt" -append
     }
 
 }
 #stop-transcript 
 

DOWNLOAD HERE

Happy Coding.

Sathish Nadarajan.

Categories