【发布时间】:2015-02-12 16:23:38
【问题描述】:
在 .NET 中,如果您的子例程的实现可能会从一个调用更改为另一个调用,则可以将委托传递给使用该子例程的方法。 You can also do this in Powershell。您还可以使用have been described as Powershell's equivalent of anonymous functions 的脚本块。然而,惯用的 powershell 使用了 powershell 的管道参数绑定。但委托和脚本块似乎都没有使用 Powershell 的管道参数绑定。
是否有一种(惯用的)方法可以将 powershell commandlet 传递给另一个 commandlet,同时保留对管道参数绑定的支持?
这是我想做的代码 sn-p:
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}
【问题讨论】:
标签: powershell delegates pipeline scriptblock