我有这个 powershell 脚本:
function Func1 ($val)
{
Write-Host "$val is processed by Func1";
}
function Func2($val)
{
Invoke-Command -ScriptBlock `
${function:Func1} -ArgumentList "$val is processed by Func2 and";
}
function Func3($val)
{
$function:Func2.Invoke("$val is processed by Func3 and");
}
Func3 "Value";
这有效 - 它输出值由 Func3 处理并由 Func2 处理并由 Func1 处理- 但我对两件事感到困惑:
Func2中的${function:function-name}代码(即美元符号后跟左花括号后跟函数后跟冒号后跟函数名称后跟右花括号)是什么意思?我可以看到它调用了 Func1,但我真的不明白它为什么起作用。
Func3中的$function:function-name.Invoke代码是什么意思?我感觉它正在使用脚本块功能,因为调用了 Invoke 方法,但我不清楚$function.function-name如何是脚本块。