In this example, I’m narrowing my search to one library and a search term.
At a high level, the script is searching the FoodSite for the word GoodTaco.
cls 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