1

.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}
4

1 に答える 1