考虑以下调用站点:
$modifiedLocal = 'original local value'
'input object' | SomeScriptblockInvoker {
$modifiedLocal = 'modified local value'
[pscustomobject] @{
Local = $local
DollarBar = $_
}
}
$modifiedLocal
我想实现SomeScriptblockInvoker
这样
- 它在一个模块中定义,并且
- 在调用者的上下文中调用脚本块。
调用站点的函数输出如下:
Local DollarBar
----- ---------
local input object
modified local value
PowerShell 似乎能够做到这一点。例如,替换SomeScriptblockInvoker
为ForEach-Object
恰好产生所需的输出。
我已经接近使用以下定义:
New-Module m {
function SomeScriptblockInvoker {
param
(
[Parameter(Position = 1)]
[scriptblock]
$Scriptblock,
[Parameter(ValueFromPipeline)]
$InputObject
)
process
{
$InputObject | . $Scriptblock
}
}
} |
Import-Module
使用该定义的呼叫站点的输出如下:
Local DollarBar
----- ---------
local
modified local value
请注意,DollarBar
它应该是空的input object
。