Verboseパラメータは詳細情報を表示する共通パラメータとして、どのコマンドレットでも使用できる。(実際に有効なメッセージが表示されるかどうかはコマンドレットの実装次第だと思うが)
この機能を自作のコマンドレットや関数などに実装するためのコマンドレットが「Write-Verbose」(だと思う)
このコマンドレットでメッセージを書きこんでおくことにより、Verboseパラメータでの詳細情報取得が可能になる。
目的が合っているかどうかはさておき、使い方は以下のような感じ。
001 002 003 004 005 006 007 008 009 | function directory($path,[switch]$verbose) { dir $path | tee -variable files Write-Verbose ($files | group{$_.extension} | Out-String ) -Verbose:$verbose } "◆◆◆normal---" directory $pshome "◆◆◆verbose--" directory $pshome -verbose |
ちなみに、SwitchパラメータをTrue、Flseで指定するには、
「パラメータ名:$true」の様にコロンに続けて指定する。
PowerShell2.0ならCmdletBinding属性をつけてAdvanced Functionsにするほうが素直かなーと思います。
返信削除その場合、関数に-verboseパラメータを定義せずとも共通パラメータが自動的に定義されるだけでなく、パラメータが付加されたかどうかの条件分岐すら要りません。
詳しくはこちらをどうぞ。
http://technet.microsoft.com/ja-jp/magazine/ff677563.aspx
この記事ではWrite-Verboseを使っていますが、CmdletBindingした関数では$pscmdlet変数を使って
$pscmdlet.WriteVerbose("詳細メッセージ")
などのようにすることもできます。詳しくはabout_Functions_Advanced_Methodsをどうぞ。