Windows Powershell => 引数にブロックを与える

関数定義での引数を[scriptblock]型に指定しておき、 関数内では"&"を使って呼び出します。 関数呼び出しの際には引数にブロック{} を記述し、中にコマンドを記載します。 

# if-elseからメッセージ出力する共通関数
  function message ([scriptblock]$condition,[string]$ok_message,[string]$ng_message) {
  if (& $condition) {
            "$ok_message" >> xxxx.log
            } else {
            "$ng_message" >> xxxx.log
            }
  }
 
# メッセージ出力関数呼び出し
$a = 4
message {$a -lt 4"$a は4より小さい" "$a は4以上"    # $a は4以上
 
$a = 3
message {$a -lt 4} "$a は4より小さい" "$a は4以上"    # $a は4より小さい
 
$a = "abc"
message {"$a" -match "a"} "$a はaを含む" "$a はaを含まない"  # abc はaを含む
 
$a = "bcd"
message {"$a" -match "a"} "$a はaを含む" "$a はaを含まない"  # abc はaを含まない