パイプラインからの入力を関数で読み取ることが出来ます。
例1
function Get-FileName { $input.Name Write-Host "ファイルは以上です。" }
実行結果
PS C:\work\image1> Get-ChildItem | Get-FileName aaaa.jpg bbbb.jpg cccc.jpg dddd.jpg eeee.jpg ffff.jpg gggg.jpg ファイルは以上です。自動変数$inputにパイプラインからの入力オブジェクトが格納され、ファイル名が列挙されます。
例2
begin、process、endキーワードを使うことで、入力されたオブジェクトに対して処理を行うことが出来ます。例として、入力されたオブジェクトの中で一番大きなサイズのファイルを見つけ出す処理を示します。
function Get-MaxFileSize { begin{ $fileName = "" $fileSize = 0 } process{ Write-Host $_.Name $_.Length if ($_.Length -gt $fileSize){ $fileName = $_.Name $fileSize = $_.Length } } end{ Write-Host "一番大きいファイルは" $fileName "サイズは" $fileSize "Byteです。" } }
実行結果
PS C:\work\image1> Get-ChildItem | Get-MaxFileSize aaaa.jpg 425167 bbbb.jpg 245901 cccc.jpg 194315 dddd.jpg 235320 eeee.jpg 852563 ffff.jpg 593126 gggg.jpg 607218 一番大きいファイルは eeee.jpg サイズは 852563 Byteです。beginブロックは最初の1回だけ呼ばれ、endブロックは最後の1回だけ呼ばれます。
また、自動変数$_にその時の入力オブジェクトが格納されています。
スポンサーリンク