私はこの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によって処理されます-しかし、私は2つのことに混乱しています。
Func2の${function:function-name}コード(つまり、ドル記号、開始中括弧、関数、コロン、関数名、終了中括弧)はどういう意味ですか?Func1を呼び出すことはわかりますが、なぜ機能するのかよくわかりません。
Func3の$function:function-name.Invokeコードはどういう意味ですか?Invokeメソッドが呼び出されるため、スクリプトブロック機能を使用しているように感じますが、 $function.function-nameがスクリプトブロックであるかどうかはわかりません。