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

如何编写带可选参数与ValueFromRemainingArguments的PowerShell Param段?

PowerShell脚本Param段实现可选参数+剩余参数收集

正确的Param声明

将以下Param段添加到脚本开头即可满足需求:

param(
    [int]$argInt = 0,

    [Parameter(Mandatory, ValueFromRemainingArguments)]
    [ValidateNotNullOrEmpty()]
    [string[]]$argsRemaining
)

参数说明

  • $argInt:定义为int类型,默认值设为0,未指定Position属性意味着它只能通过显式的-argInt名称绑定参数,不会占用位置参数名额,确保不指定该参数时,所有位置输入都会被收集到剩余参数数组。
  • $argsRemaining:
    • Mandatory标记确保脚本必须接收至少一个参数,对应无参数调用时的报错场景;
    • ValueFromRemainingArguments指定该参数收集所有未被其他参数绑定的输入值;
    • [ValidateNotNullOrEmpty()]与Mandatory配合,确保参数数组不为空或包含空值,触发符合预期的错误提示。

对应预期场景验证

  1. 无-argInt传位置参数:.\my-args.ps1 foo bar
    • $argInt使用默认值0,foo和bar被收集到$argsRemaining,输出符合预期。
  2. 指定-argInt加剩余参数:.\my-args.ps1 -argInt 33 foo bar
    • 33绑定到$argInt,剩余的foo和bar进入$argsRemaining,输出符合预期。
  3. -argInt传入非int值:.\my-args.ps1 -argInt foo
    • PowerShell自动尝试将字符串foo转换为int类型失败,触发参数转换错误,符合预期。
  4. 无任何参数调用:.\my-args.ps1
    • 由于$argsRemaining是必填参数且不能为空,触发参数验证错误,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 18:25:58