PowerShell のヘルプを検索する関数を作る

PowerShell の Get-Help コマンドで読めるヘルプを検索する関数を作ってみた。

# 指定の文字列を含む Get-Help を表示する
# 「> Search-Help フォーマット演算子」というように実行する
# 検索中は進捗状況をプログレスバーで表示する
function Search-Help {
  param($pattern)
  $helpNames = Get-Help * | ?{$_.Category -ne "Alias"}
  $STime = Get-Date
  $pCounter = $remaining = 0
  foreach($helpTopic in $helpNames) {
    $span = New-TimeSpan $STime (Get-Date)
    if($pCounter % 20 -eq 1) {
      $remaining = ($span.Seconds / $pCounter) * ($helpNames.Count - $pCounter)
    }
    Write-Progress -Activity "Help 検索" -Status "検索中..." -PercentComplete ($pCounter++ * 100 / $helpNames.Count) -CurrentOperation ($helpTopic.Name) -SecondsRemaining $remaining
    $content = Get-Help -Full $helpTopic.Name | Out-String
    if($content -match $pattern) {
      $helpTopic | select name, synopsis
    }
  }
}

この関数を定義したら、

> Search-Help フォーマット演算子

という感じで「フォーマット演算子」を含むヘルプを検索できる。

過去に作ったショボいコードを吐き捨てて終わり。