我已经使用ScriptBlocks在PowerShell中成功传递了无参数函数。但是,如果函数有参数,我无法使用它。有没有办法在PowerShell中执行此操作? (最好是v2)
Function Add([int] $x, [int] $y)
{
return $x + $y
}
Function Apply([scriptblock] $s)
{
write-host ($s.Invoke(1,2))
}
然后
Apply { Add }
将0写入控制台。 Apply会调用Add
,但不传递任何参数(即使用0和0的默认[int]值)
答案 0 :(得分:13)
好的,我找到了答案here:
我在调用${function:Add}
时想要{ Add }
而不是Apply
。
答案 1 :(得分:1)
使用PowerShell函数提供程序可以更清晰地执行此操作。我需要能够根据运行时提供的XML文件从其他源文件中运行具有可变数量参数的函数。
在开发这个时,我在两个源文件中写了一个小的“Hello World”测试器,这应该是相当不言自明的(魔术行是“ $ x =(& $ func $ parm) “):
function Hello ($in) {
write-Host "Hello $in"
}
function exec-script ($file, $func, $parm) {
Invoke-Expression $file
$x = (& $func $parm)
$x
}
exec-script -file ".\Hello" -func "Hello" -parm "World"
答案 2 :(得分:0)
你不想做这样的事吗?
function Add([int] $x, [int] $y)
{
return $x + $y
}
function Apply([scriptblock] $s)
{
Write-Host $s.Invoke($args)
}
Apply { Add 1 2}