在PowerShell中将函数(带参数)作为参数传递

在PowerShell中将函数(带参数)作为参数传递,powershell,functional-programming,powershell-2.0,first-class-functions,Powershell,Functional Programming,Powershell 2.0,First Class Functions,我一直在使用ScriptBlocks成功地在PowerShell中传递无参数函数。但是,如果函数有参数,我就不能让它工作。在PowerShell中有这样做的方法吗?(最好是v2) 然后 将0写入控制台。Apply会调用Add,但不会传入任何参数(即使用默认的[int]值0和0)好的,我找到了答案: 我想要${function:Add}而不是{Add}在调用Apply时使用PowerShell函数提供程序有一种更干净的方法来实现这一点。我需要能够根据运行时提供的XML文件,从其他具有可变参数数的源

我一直在使用ScriptBlocks成功地在PowerShell中传递无参数函数。但是,如果函数有参数,我就不能让它工作。在PowerShell中有这样做的方法吗?(最好是v2)

然后

将0写入控制台。Apply会调用
Add
,但不会传入任何参数(即使用默认的[int]值0和0)

好的,我找到了答案:


我想要
${function:Add}
而不是
{Add}
在调用
Apply

时使用PowerShell函数提供程序有一种更干净的方法来实现这一点。我需要能够根据运行时提供的XML文件,从其他具有可变参数数的源文件运行函数

在开发过程中,我在两个源文件中编写了一个小型的“Hello World”测试程序,这两个源文件应该是不言自明的(神奇的一行是“$x=(&$func$parm)”):

  • “Hello.ps1”-远程功能
  • 函数Hello($in){
    写主机“Hello$in”
    
    }
    Trap for young player:大括号和函数细节之间不能有空格。因此,
    ${function:Add}
    (前导空格和尾随空格)、
    ${function:Add}
    (前导空格)或
    ${function:Add}
    (尾随空格)都将失败,出现错误
    您无法对空值表达式调用方法。
    ${function:Add},没有前导空格或尾随空格,工作正常。
    Function Add([int] $x, [int] $y)  
    { 
      return $x + $y 
    }
    Function Apply([scriptblock] $s)    
    { 
        write-host ($s.Invoke(1,2)) 
    }
    
    Apply { Add }