.NET では、サブルーチンの実装が呼び出しごとに変わる可能性がある場合、サブルーチンを使用するメソッドにデリゲートを渡すことができます。 これは Powershell で行うこともできます。Powershellの無名関数に相当するものとして説明されているスクリプト ブロックを使用することもできます。ただし、慣用的な powershell は、powershell のパイプライン パラメーター バインディングを利用します。しかし、デリゲートもスクリプト ブロックも、Powershell のパイプライン パラメーター バインディングを利用していないようです。
パイプライン パラメーター バインディングのサポートを保持する方法で、powershell コマンドレットを別のコマンドレットに渡す (慣用的な) 方法はありますか?
これが私がやりたいことのコードスニペットです:
Function Get-Square{
[CmdletBinding()]
Param([Parameter(ValueFromPipeline=$true)]$x)
PROCESS{$x*$x}
}
Function Get-Cube{
[CmdletBinding()]
Param([Parameter(ValueFromPipeline=$true)]$x)
PROCESS{$x*$x*$x}
}
Function Get-Result{
[CmdletBinding()]
Param([Parameter(ValueFromPipeline=$true)]$x,$Cmdlet)
PROCESS{$x | $Cmdlet}
}
10 | Get-Result -Cmdlet {Get-Square}
10 | Get-Result -Cmdlet {Get-Cube}