HIRO's.NET

VB.NET, C#, PowerShell Tipsサイト

 VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。

 基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。

HIRO's.NET RSSHIRO's.NET RSS


PowerShellの開発でお困りのことはありませんか?
そんな悩みは当サイトで解決!!

HOME > PowerShell Tips > 関数 Tips メニュー

07.パイプライン引数

 
UPDATE:2007/12/04    
 




PowerShellでは、|で他のコマンドとパイプライン処理を行うことができます。
パイプラインから受け取った値は、$inputという自動変数に代入されます。

sample1では "Apple", "Orange", "Banana"の値をパイプラインで関数PrintStringへ渡しています。
foreachを使用して$inputへ代入された値を1つずつ取り出し、出力しています。

sample1

PS C:\Work> function PrintString {
>> foreach ( $a in $input )
>> {
>> Write-Host $a
>> }
>> }
>>
PS C:\Work2> "Apple", "Orange", "Banana" | PrintString
Apple
Orange
Banana

|を使用して関数を呼び出す場合は、begin, process, endキーワードを使用して、初期化から終了処理までを簡潔に書くことが可能です。

構文は

function 関数名 {
begin {最初に1度だけ実行される}
process {パイプラインで受けた値の数だけ繰り返される}
end {最後に1度だけ実行される}
}


です。
sample2をtest.ps1として保存して実行してみましょう。

sample2

function func1
{
begin { Write-Host "--Begin--"}
process { $input }
end { Write-Host "--End--" }
}

"Apple", "Orange", "Banana" | func1

実行結果はsample3のとおりです。
最初に --Begin-- という文字列が出力されます。(1)
次にパイプラインで受け取った値の数だけ process ブロックに書かれた処理を実行します。(2)
最後に --End-- という文字列を出力します。(3)

sample3

PS C:\Work2> ./test.ps1
--Begin--
Apple
Orange
Banana
--End--