2006/12/08
コマンドレットオンラインヘルプ作成 ver2
コマンドレットオンラインヘルプ作成
http://blogs.wankuma.com/mutaguchi/archive/2006/11/07/43965.aspx
の続編です。本文中のコマンドレットにリンクを張るようにしました。その他いろいろ改善。
旧バージョンをお使いの方は一度*.htmlを削除してください。ファイル名が変わりました。
function Sanitize{ #サニタイズ処理 param ([string]$strSource) return ($strSource.Replace("&","&").Replace("<","<").Replace(">",">")) } function MakeLink{ #用語にリンクを張る param ([string]$strSource) foreach ($key in $keys){ $strSource = $strSource -replace "(\s)($key)(\s)", ("`$1`$2`$3") } return ($strSource); } #キーワードを格納するArrayList $keys = new-object System.Collections.Arraylist get-help -category all | ?{"Cmdlet","Provider","HelpFile" -contains $_.category}| %{if ($_.Name -ne $null) {[void] $keys.Add($_.Name)}} # "Cmdlet","Provider","HelpFile"のカテゴリを持つヘルプをHTML化 get-help -category all | ?{"Cmdlet","Provider","HelpFile" -contains $_.category}| %{"" + $(MakeLink $(Sanitize (get-help $_.Name -detail|out-string))).Replace("`r`n",""| out-file($_.name + ".html")} $temp="
") + "戻る
名前 | 種類 | 簡易説明 |
---|---|---|
" + $_.name + " | " + $_.category + " | " + $_.synopsis + " | "} # Cmdlet,Provider,HelpFileの各ヘルプ get-help -category all | ?{"Cmdlet","Provider","HelpFile" -contains $_.category} | sort category,name| %{$temp+="
" + $_.name + " | " + $_.category + " | " + $_.synopsis + " | "} $temp+="
コマンドレットとパイプを多用するスクリプトの見やすい記法ってなんかないですかね?自分で読んでもよくわかりませんなこれw
あと気づいたこと。メソッドを呼び出すときはmethodname
(parameter)
のようにメソッド名と引数の間にスペースを入れてはいけない!VBSとかになれているとはまります。
関数の呼び出しはfuncname param1
param2
のようにする(引数は,で区切るのではない!)。関数の戻り値を読むときは$(funcname param1
param2)
のようにする。関数中で何か値が返されるとそれがそのまま関数の戻り値になる(returnは明示しなくてもいいということ。複数の値を返すと戻り値は[object[]]の配列になる。逆に値を返したくない場合は[void]にキャスト)
-replace演算子でサブマッチ文字列は$1,$2..に格納される。$は変数の頭文字なので ` (アクサン グラーブ)でエスケープし、`$1とする。もしくは''(シングルクォーテーション)でくくり'$1'のようにする。
そうそう、
get-help -category all | ?{"Cmdlet","Provider","HelpFile" -contains
$_.category}|
は、なんで
get-help -category Cmdlet,Provider,HelpFile
にしなかったかというと、このようにしてもなぜかAliasが含まれてしまうからです。Cmdletを指定するとAliasが含まれる仕様のようです。
でも-containsの使い方がわかってよかったです(ちょっとトリッキー?)
プライバシーポリシー