Get-HelpMatch - Search Help (Apropos) in PowerShell

Sun, Oct 22, 2006 2-minute read

To give a glimpse into the writing process behind my upcoming “Windows PowerShell - The Definitive Guide” (O’Reilly,) I’ll occasionally post entries “as the author sees it.”  The first in this series shows how to search the PowerShell help content for a phrase or pattern.

Program: Get-HelpMatch¶

Both the Get-Command and Get-Help cmdlets allow you to search for command names that match a given pattern. However, when you don’t know exactly what you are looking for, you will more often have success searching through the help content for an answer. On Unix systems, this command is called Apropos.  Similar functionality does not exist as part of the PowerShell’s help facilities, however.¶

That doesn’t need to stop us, though, as we can write the functionality ourselves.¶

To run this program, supply a search string to the Get-HelpMatch script. The search string can be either simple text, or a regular expression. The script then displays the name and synopsis of all help topics that match. To see the help content for that topic, use the Get-Help cmdlet.¶

Example 1-4. Get-HelpMatch.ps1¶

##############################################################################¶
## Get-HelpMatch.ps1¶
##¶
## Search the PowerShell help documentation for a given keyword or regular¶
## expression.¶
## ¶
## Example:¶
##    Get-HelpMatch hashtable¶
##    Get-HelpMatch "(datetime|ticks)"¶
##############################################################################¶param($searchWord = $(throw "Please specify content to search for"))¶
¶
$helpNames = $(get-help *)¶
¶

foreach($helpTopic in $helpNames)¶
{¶
   $content = get-help -Full $helpTopic.Name | out-stringif($content -match $searchWord)¶
   {¶
      $helpTopic | select Name,Synopsis¶
   }¶
}¶