在PowerShell中打印所有位置参数

3
我将为您翻译这段内容:

我正在尝试编写一个PowerShell函数,该函数会打印出所有的参数。

ArgChecker.ps1

function Print-Args
{
  [CmdletBinding()]
  param ([string[]]$words)
    Write-Verbose "Count: $($words.Count)"
    Write-Output "Passed arguments:"
    $words
}

我也想从命令提示符中调用它。

我是这样做的

powershell -ExecutionPolicy Bypass -command "& { . .\ArgChecker.ps1; Print-Args 'hi' 'Two' -Verbose }"

但是它会抛出一个错误Print-Args: 无法找到接受参数'Two'的位置参数

有没有办法编写函数,以便可以接受该格式的无限数量的参数? 我认为我正在寻找类似于C#中的params关键字的东西。

1个回答

4

在常规函数中,您可以使用$args自动变量。

function Write-Args {
    $args
}

如果您需要带有 CmdletBinding 的 cmdlet,您可以使用 ValueFromRemainingArguments 选项:
function Write-Args {
    [CmdletBinding()]
    param(
        [Parameter(ValueFromRemainingArguments)]
        [string[]]$Arguments
    )
    $Arguments
}

请注意,由于 CmdletBinding-Verbose 不会出现在列表中,因为它是 常用参数。如果您也想列出这些参数,可以使用 $PSBoundParameters 自动变量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接