【发布时间】:2015-02-23 01:58:41
【问题描述】:
假设您在map.ps1 中定义map_ps:
function map_ps{
[CmdletBinding()]
param([parameter(ValueFromPipeline=$true)]$InputObject,$sb,$ArgumentList)
process{&$sb $ArgumentList}
}
假设您还在名为map.psm1 的well-formed 模块中定义了另一个具有相同实现的函数map_psm:
function map_psm{
[CmdletBinding()]
param([parameter(ValueFromPipeline=$true)]$InputObject,$sb,$ArgumentList)
process{&$sb $ArgumentList}
}
使用相同的参数调用每个函数不会产生相同的结果:
PS C:\> 1 | map_ps -sb {"DollarBar:$_, Arg:$($args[0])"} -ArgumentList 2
DollarBar:1, Arg:2
PS C:\> 1 | map_psm -sb {"DollarBar:$_, Arg:$($args[0])"} -ArgumentList 2
DollarBar:, Arg:2
为什么在.psm1 中实现函数时$_ 为空,而在.ps1 中实现函数时却不是?
【问题讨论】:
标签: powershell module pipeline