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

如何在PowerShell脚本中同时使用命名参数与未命名参数?

问题原因

PowerShell默认启用位置参数绑定规则,你在param块中定义的参数如果没有显式指定位置属性,会按照定义顺序自动分配位置编号,第一个参数默认对应位置0。所以执行init.ps1 service up时,第一个位置输入的service会自动绑定给$s,剩下的up才会进入$args。

修改方案

在脚本开头加上[CmdletBinding(PositionalBinding=$false)]关闭全局位置参数绑定,所有显式声明的参数只能通过命名方式传值,未匹配到命名参数的输入会全部进入$args。如果后续需要新增其他命名参数,直接在param块中添加即可,不需要额外调整配置。

修改后的完整代码示例:

[CmdletBinding(PositionalBinding=$false)]
param(
    $s
)
write-host $s
write-host $args

效果验证

  • 执行init.ps1 service up时,$s为空,$args内容为service up,符合默认执行预期。
  • 执行init.ps1 service up -s auth时,$s取值为auth,$args内容仍为service up,满足指定服务启动的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:57:01