複数のscriptblockパラメーターを受け入れるPowershell関数を作成できませんでした。これが簡略化されたテストスクリプトです。複数のスクリプトブロックの問題は何ですか?
function Task1 {
param([scriptblock]$f={})
$f.Invoke()
}
function Task2 {
param([scriptblock]$f={}, [scriptblock]$k={})
$f.Invoke()
$k.Invoke()
}
Task1({write-host "hello" -nonewline })
Task1({write-host " world" })
Task2({write-host "hello" -nonewline }, { write-host " world" })
これにより、次の出力が生成されます。
hello world
Task3 : Cannot process argument transformation on parameter 'f'. Cannot convert the "System.Object[]" value of type "S
ystem.Object[]" to type "System.Management.Automation.ScriptBlock".