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


Comments (0)

Skip to main content