hakeの日記

Windows環境でプログラミングの勉強をしています。

PowerShell - 関数(パイプ)

パイプで渡されるてくるデータの処理用の関数。
開始処理はbeginブロック、終了処理はendブロック、渡されてくるデータの処理はprocessブロックに記述する。渡されてきたデータは変数$_に格納されている。
returnで値を返すと関数の出力になる。

even.ps1

function even {
    begin{ $cnt = 0 }
    process {
        $cnt++
        if($_ % 2 -eq 0){
            return "${cnt}番目のデータ:$_"
        } else {
            return
        }
    }
    end{ return "終了" }
}

実行結果

PS C:\> . C:\even.ps1

PS C:\> 1..10 | even
2番目のデータ:2
4番目のデータ:4
6番目のデータ:6
8番目のデータ:8
10番目のデータ:10
終了