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

为何通过$PSDefaultParameterValues为PowerShell脚本设默认参数失效?

解决$PSDefaultParameterValues为脚本Mandatory参数设置默认值失效的问题

核心问题原因

  1. 键名格式错误:$PSDefaultParameterValues识别脚本时,只需使用脚本的基础文件名(如myScript.ps1),无需完整路径,完整路径会导致匹配失败。
  2. Mandatory参数的优先级:标记为[Parameter(Mandatory)]的参数,PowerShell会优先触发交互输入请求,忽略$PSDefaultParameterValues中的默认值,除非强制覆盖。

解决方案

方案1:保留Mandatory标记,强制使用默认值

在键名前添加*前缀,强制覆盖Mandatory参数的交互要求:

$PSDefaultParameterValues=@{
    "*myScript.ps1:Path" = "C:\temp\db.jsonc"
}

方案2:移除Mandatory标记(若业务允许)

如果不需要强制用户输入参数,可去掉Mandatory属性,直接使用标准键名配置:

# 配置默认值
$PSDefaultParameterValues=@{
    "myScript.ps1:Path" = "C:\temp\db.jsonc"
}

修正后的脚本代码:

[CmdletBinding()]
param (
    [Parameter(ValueFromPipeline,ValueFromPipelineByPropertyName)]
    [string]$Path
)
"path ---> $Path"

验证效果

运行.myScript.ps1时,会直接输出path ---> C:\temp\db.jsonc,不再弹出参数输入提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 10:12:43