9

我已经使用 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,但不传递任何参数(即使用默认的 [int] 值 0 和 0)

4

2 回答 2

14

好的,我在这里找到了答案:

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

于 2013-09-02T09:55:16.157 回答
1

使用 PowerShell 函数提供程序有一种更简洁的方法来执行此操作。我需要能够根据运行时提供的 XML 文件从其他具有可变数量参数的源文件中运行函数。

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

  1. "Hello.ps1" - 远程函数

    function Hello ($in) {
     
        write-Host "Hello $in"
    }

  1. “Hello2.ps1” - 执行例程

    function exec-script ($file, $func, $parm) {
       
       Invoke-Expression $file    
       
       $x = (& $func $parm)
       
       $x
        
       }
    
    exec-script -file ".\Hello" -func "Hello" -parm "World"

于 2014-12-16T21:34:26.287 回答