我想创建一个枚举一些数据的 PowerShell 函数,并在所有出现时触发一个脚本块。
现在我有(这不是实际的代码,但它说明了我的问题):
function Invoke-TenTimes
{
[CmdletBinding()]
param
(
[Parameter(Mandatory=$true, Position=0)]
[ScriptBlock]$Action
)
process
{
$digits = 0..10
$digits | % {
$Action.Invoke($_);
}
}
}
我把这个函数放在我的模块中。但是,当我打电话时我没有得到任何结果:
Invoke-TenTimes { $_ }
输出为空白(不显示任何内容)。
如果我打电话
Invoke-TenTimes { $_ -eq $null }
我得到十个true
。事实上,我看到那$_
是空的。
填充的正确方法是$_
什么?
让我发疯的是,如果我将此函数和调用放在同一个 ps1 文件中,它可以工作(但我想按需传递脚本块):
function Invoke-TenTimes
{
[CmdletBinding()]
param
(
[Parameter(Mandatory=$true, Position=0)]
[ScriptBlock]$Action
)
process
{
$digits = 0..10
$digits | % {
$Action.Invoke($_);
}
}
}
Invoke-TenTimes { $_ }