How to export Search Metadata Properties using PowerShell from a Development (Test) Environment and import it in a Production Environment.
#Export Crawled Properties
$snapin = Get-PSSnapin | Where-Object {$_.Name -eq 'Microsoft.SharePoint.Powershell'}
if ($snapin -eq $null)
{
Write-Host "Loading SharePoint Powershell Snapin"
Add-PSSnapin "Microsoft.SharePoint.Powershell"
}
$CrawledPropertyName = "ows*"
$SearchService = "Search Service"
$PathXmlFiles = "C:\deploy\xml"
Get-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $SearchService | Where-Object {$_.name -like $CrawledPropertyName} | Export-Clixml $PathXmlFiles\getcrawledproperty.xml
Write-Host "Crawled Property exported to $PathXmlFiles\getcrawledproperty.xml" -ForegroundColor Yellow
#Import Crawled Properties
$snapin = Get-PSSnapin | Where-Object {$_.Name -eq 'Microsoft.SharePoint.Powershell'}
if ($snapin -eq $null)
{
Write-Host "Loading SharePoint Powershell Snapin"
Add-PSSnapin "Microsoft.SharePoint.Powershell"
}
$SearchService = "Search Service"
$PathXmlFiles = "\\(mydevserver)\C$\deploy\xml"
$xmlmetadata = Import-Clixml $PathXmlFiles\getcrawledproperty.xml
foreach ($metadata in $xmlmetadata)
{
$created = Get-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $SearchService | Where-Object {$_.Name -eq $metadata.Name}
if ($created)
{
Write-Host $metadata.Name "already present" -ForegroundColor:Yellow
} else {
New-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $SearchService -Name $metadata.Name -Category $metadata.CategoryName -PropSet $metadata.Propset -IsNameEnum:$false -VariantType $metadata.VariantType
Write-Host $metadata.Name "added" -ForegroundColor:Yellow
}
}
