パイプライン機能を追加しようとしているスクリプトがあります。ただし、スクリプトがパイプラインの最終オブジェクトに対してのみ実行されるように見える奇妙な動作が見られます。例えば
param(
[parameter(ValueFromPipeline=$true)]
[string]$pipe
)
foreach ($n in $pipe) {
Write-Host "Read in " $n
}
まったく単純ですよね?次に実行する1..10 | .\test.ps1
と、1 行だけが出力されますRead in 10
。複雑さに加えて、これを使用したい実際のスクリプトには、さらに多くのパラメーターがあります。
[CmdletBinding(DefaultParameterSetName="Alias")]
param (
[parameter(Position=0,ParameterSetName="Alias")]
[string]$Alias,
[parameter(ParameterSetName="File")]
[ValidateNotNullOrEmpty()]
[string]$File
<and so on>
)