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

如何从命令行向PowerShell脚本传递命名参数?

解决PowerShell脚本调用的参数解析错误

错误原因

当使用powershell -File调用脚本时,PowerShell会将脚本名后的所有内容直接作为位置参数传递,不会解析-Arg1这类命名参数语法。这就导致-Arg1被当成第一个位置参数的值,$false被当作额外的位置参数,而你的脚本大概率没有定义对应数量的位置参数,因此抛出A positional parameter cannot be found that accepts argument '$false'错误。

解决方案

方法1:改用-Command参数调用(推荐)

-Command参数会让PowerShell完整解析后续的命令语法,支持命名参数、默认参数等特性,完全匹配你的需求。

调用格式示例:

powershell -Command "& .\somescript.ps1 -Arg1 `$false -Arg2 `$false -Arg3 `$false"
  • 反引号`用于转义$,避免被当前shell(比如cmd)提前解析;如果是在PowerShell环境内调用另一个PowerShell进程,也可以用单引号包裹脚本调用部分:
    powershell -Command '& .\somescript.ps1 -Arg1 $false -Arg2 $false -Arg3 $false'
    
  • 对于带默认值的参数,只需指定需要修改的参数即可,其余自动使用脚本定义的默认值。比如仅修改Arg1:
    powershell -Command "& .\somescript.ps1 -Arg1 `$false"
    

方法2:确保脚本参数定义正确(仅适用于-File场景)

如果必须使用-File,脚本需将参数定义为位置参数,但这无法满足你“明确参数名称”的需求,仅作补充说明:
脚本内参数定义示例:

param(
    [bool]$Arg1 = $true,  # 带默认值,不指定时自动使用$true
    [bool]$Arg2 = $true,
    [bool]$Arg3 = $true,
    [string]$ExtraParam = "default"
)

但用-File调用时只能按位置传值,无法指定参数名,比如:

powershell -File somescript.ps1 $false $false $false

这种方式不符合你的需求,因此更推荐方法1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:05:10