How to Create Managed Property in SharePoint 2013 using PowerShell

Sathish Nadarajan
 
Solution Architect
January 24, 2015
 
Rate this article
 
Views
19830

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 
 

DOWNLOAD HERE

Happy Coding.

Sathish Nadarajan.

Author Info

Sathish Nadarajan
 
Solution Architect
 
Rate this article
 
Sathish is a Microsoft MVP for SharePoint (Office Servers and Services) having 15+ years of experience in Microsoft Technologies. He holds a Masters Degree in Computer Aided Design and Business ...read more
 

Leave a comment