You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell如何编写支持接收任意数量位置参数的函数

问题原因

你的报错是因为当前的$words参数没有配置剩余参数接收特性,默认情况下每个参数仅能接收一次传值,你传入了两个位置参数hi和Two,函数只能识别第一个参数,第二个没有对应参数位置所以抛出错误。

要实现C#中params关键字接收任意数量位置参数的效果,只需要给参数加上[Parameter(ValueFromRemainingArguments = $true)]标记即可。


修改后的ArgChecker.ps1代码

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

调用方法

你原来的调用命令不需要做任何修改,直接运行即可正常执行:

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

运行后预期输出为:

VERBOSE: Count: 2
Passed arguments:
hi
Two

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:24:04