I've been successfully passing no-argument functions around in PowerShell using ScriptBlocks. However, I can't get this to work if the function has arguments. Is there a way to do this in PowerShell? (v2 preferably)
Function Add([int] $x, [int] $y)
{
return $x + $y
}
Function Apply([scriptblock] $s)
{
write-host ($s.Invoke(1,2))
}
Then
Apply { Add }
writes 0 to the console. Apply does invoke Add
, but doesn't pass any arguments in (i.e. uses the default [int] values of 0 and 0)
${ function:Add }
(leading and trailing spaces),${ function:Add}
(leading space) or${function:Add }
(trailing space) will all fail with errorYou cannot call a method on a null-valued expression.
${function:Add}
, without either leading or trailing space, works fine. – Crouse