将PowerShell函数args附加到该函数调用的程序

时间:2019-01-24 16:45:42

标签: powershell

我想知道如何将PowerShell函数参数附加到程序命令?

我想要这样的东西:

function every_loop(array, test) {
  for (let index = 0; index <= array.length - 1; index++) {
    let x = test(array[index]);
    if (!x) {
      console.log(array[index]);
      return false;
    }
  }
  return true;
}

console.log(every_loop([1, 2, 3, 4, 5], n => n >= 1));

因此,单独调用function foo($x, $y, $z) { docker run $x $y $z } 等同于PS>foo,等同于PS>docker run等同于PS>foo a b c

这似乎是一个必须在此处某处回答的问题,但我找不到它。我不确定我是否只是措辞不佳。如果这样的话,请提前道歉。

谢谢!

1 个答案:

答案 0 :(得分:1)

$PSBoundParameters.Values中获取参数值:

function foo($x, $y, $z) {
  docker run $PSBoundParameters.Value
}

正如评论中指出的那样,$PSBoundParameters不保证插入顺序,另一种方法是采用设置了ValueFromRemainingArguments参数标志的数组的单个参数:

function foo {
  param(
    [Parameter(Mandatory=$false,ValueFromRemainingArgumemnts)]
    [string[]]$dockerArgs
  )

  $dockerArgs = @('run';$dockerArgs)
  & docker $dockerArgs
}