In this example, I’m narrowing my search to one library and a search term.
At a high level, the script searches the FoodSite for the word GoodTaco.
function Query-SPSearch {
param(
[Parameter(Mandatory=$true)][String]$WebApplicationPath,
[Parameter(Mandatory=$true)][String]$KeywordQuery,
[Parameter()][Int32]$Count = 10
)
$QueryXml = @"
<QueryPacket xmlns="urn:Microsoft.Search.Query" >
<Query>
<Context>
<QueryText type="STRING">$KeywordQuery</QueryText>
</Context>
<Range>
<Count>$Count</Count>
</Range>
<IncludeSpecialTermResults>false</IncludeSpecialTermResults>
<PreQuerySuggestions>false</PreQuerySuggestions>
<HighlightQuerySuggestions>false</HighlightQuerySuggestions>
<IncludeRelevantResults>true</IncludeRelevantResults>
<IncludeHighConfidenceResults>false</IncludeHighConfidenceResults>
</Query>
</QueryPacket>
"@
$ServicePath = "/_vti_bin/search.asmx"
$SearchWS = New-WebServiceProxy -Uri ($WebApplicationPath + $ServicePath) -UseDefaultCredential
$Results = $SearchWS.QueryEx( $QueryXml )
# we excluded all other result sets, but just in case get the one we want:
$Results.Tables["RelevantResults"]
}
Query-SPSearch -WebApplicationPath "https://sharepointed.com/sites/foodsite" -KeywordQuery "GoodTaco AND path:https://sharepointed.com/sites/foodsite/tacos" -Count 20 | Format-Table Title, Author, Path