是否可以跨函数组合参数列表?

时间:2016-09-02 11:23:53

标签: powershell

我有一个Powershell脚本,其中包含2个与参数非常相似的函数。 是否可以将参数(Computername,Port,OtherVariable)组合成某种集合?

在这个例子中,它只有3个参数,但实际上它是11个参数。 我正在考虑这样做,因为参数列表开始变得有点长。

function Function1 
{
  Param(
    [Parameter()]
    [String]$Filename,
    [Parameter()]
    [String]$Computername,
    [Parameter()]
    [String]$Port,
    [Parameter()]
    [String]$OtherVariable
    )
  Process
  {

  }
}

function Function2
{
  Param(
    [Parameter()]
    [String]$Url,
    [Parameter()]
    [String]$Computername,
    [Parameter()]
    [String]$Port,
    [Parameter()]
    [String]$OtherVariable
    )
  Process
  {

  }
}

1 个答案:

答案 0 :(得分:1)

您有几个选择:

  1. 不声明您的参数。但是你失去了任何自动帮助,这将使其难以维护(除非你添加了评论,详细说明了预期/接受的参数 - 但这仍然需要维护)。
  2. 将两个函数共有的代码移动到第三个函数中(不确定在用例中是否可以这样做?)
  3. 创建一个超级*函数,就像你帖子评论中提到的woxxom一样,包含所有参数以及编译和导出[switch]参数。然后将编译和导出代码移动到单独的函数中,或者包含在超级函数中。
  4. *超级超集