Copy your saved searches from database to database using Powershell
Maybe you have a testing or POC database in which you have a bunch of Saved Searches and you want to export these and import them to your production database. These Powershell scripts will export and import the search related properties, not the ACL of course.
Export
The code below:
- connects to the database N1 on the local machine
- does a search for a saved search with the URI 9000000010
- writes the XML representation of that saved search to a file
$assemblyPath = "d:\trunk\x64\Debug\HP.HPTRIM.SDK.dll"
Add-Type -Path $assemblyPath
$database = New-Object HP.HPTRIM.SDK.Database
$database.Id = "N1"
$database.WorkgroupServerName = "local"
$database.Connect()
$searchSearch = New-Object HP.HPTRIM.SDK.TrimMainObjectSearch($database, [HP.HPTRIM.SDK.BaseObjectTypes]::SavedSearch)
$searchSearch.SetSearchString("unkUri:9000000010")
foreach ($savedSearch in $searchSearch ) {
$outputPath = "c:\junk\searches\" + $savedSearch.Name + ".xml"
$savedSearch.GetSearch().SearchAsXml | out-file -append $outputPath
}
Import
This code:
- connects to the database N2 on the local machine
- reads all the files in the folder
- creates a TrimMainObjectSearch and sets the SearchAsXml property from the saved XML
- creates a Saved Search from the TrimMainObjectSearch
$assemblyPath = "d:\trunk\x64\Debug\HP.HPTRIM.SDK.dll"
Add-Type -Path $assemblyPath
$database = New-Object HP.HPTRIM.SDK.Database
$database.Id = "N2"
$database.WorkgroupServerName = "local"
$database.Connect()
$files = @(Get-ChildItem c:\junk\searches\*.xml)
foreach ($file in $files) {
$newSearch = New-Object HP.HPTRIM.SDK.TrimMainObjectSearch($database, [HP.HPTRIM.SDK.BaseObjectTypes]::Record)
$newSearch.SearchAsXML = [System.IO.File]::ReadAllText($file.FullName)
$savedSearch = New-Object HP.HPTRIM.SDK.SavedSearch($newSearch)
$savedSearch.Name = $file.BaseName
$savedSearch.Save()
}
Written on October 24, 2019