0

我有一个动态加载的 PowerShell 脚本块,它接受多个参数(包括强制、类型、默认值……)。我还有一个函数,它有自己的参数集,在内部,它调用脚本块。脚本块是根据其他参数动态加载的,我想允许用户将参数传递给我的函数并将它们转发到脚本块。为此,我想从脚本块中读取可能的参数,我可以使用这些$block.Ast.ParamBlock.Parameters参数,然后使用DynamicParam.

例子:

脚本块:

$block = {
  param([Parameter(Mandatory)][string]$test = 10)
  echo $test
}

功能:

function Fn {
  param($FnParam1, $FnParam2)

  DynamicParam {
    // what to write here
  }

  & $block // how to efficiently forward the parameters here?
}

应该可以这样调用Fn

Fn -FnParam1 value -FnParam2 value -test 20

但是,DynamicParam是使用RuntimeDefinedParameter和相关的类创建的,并且脚本块的 AST 返回Management.Automation.Language.ParameterAst和来自同一命名空间的其他实例。我可以通过逐个节点转换 AST 来手动创建DynamicParam参数,但似乎应该有一种更简单的方法来自动转换这些参数。

4

0 回答 0