2011年9月29日木曜日

◆Write-Verboseで詳細情報を書き込む

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

image

ちなみに、SwitchパラメータをTrue、Flseで指定するには、
「パラメータ名:$true」の様にコロンに続けて指定する。

1 件のコメント:

  1. 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をどうぞ。

    返信削除