Sharepoint search, powershell and keywordquery
Ever wanted to just query the search catalog for some text and get back your results without going into the browser?
Ever needed to use a sharepoint query to drive data through another script or other code?
Well, here's your answer. :)
I whipped this little widget up to use the KeywordQuery class to issue queries to a site and saves off the results as a CSV file.
Things to remember: Use the Microsoft.Office.Server.Search.Query.KeywordQuery class to do your dirty work, not Microsoft.SharePoint.Search.Query.KeywordQuery unless (I believe) you are using WSS 3.0 or SharePoint Foundation Server 2010 only.
And here you go - just save that off as .ps1 and run it from your SharePoint Management Console window
#input parameters
param($site, $queryText, $outputPath)
# new keywordquery object
$site = New-Object Microsoft.SharePoint.SPSite $site
$query = New-Object Microsoft.office.Server.Search.Query.KeywordQuery $site
# set ResultTypes
$query.ResultTypes = [Microsoft.Office.Server.Search.Query.ResultType]::RelevantResults
# set number of items to return
$query.RowLimit = 10
# actual string you are searching for
$query.QueryText = $queryText
# execute the query
$resultTableColl = $query.Execute()
# get the results back
$resultTable = $resultTableColl.Item([Microsoft.Office.Server.Search.Query.ResultType]::RelevantResults)
# make a DataTable from the results
$resDataTable = $resultTable.Table
# output the results, select the properties you want back, export to CSV file
$resDataTable.Rows | Select-Object -Property Path,Title | Export-Csv -Path $outputPath