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

如何基于其他参数条件化设置PowerShell的PSDefaultParameterValues

实现方案

你可以直接在PSDefaultParameterValues对应的脚本块中通过$PSBoundParameters获取当前命令调用时传入的所有绑定参数的键值对,不需要依赖$args,以下是符合你需求的实现:

# 不要直接覆盖整个$PSDefaultParameterValues,避免丢失已有的默认参数配置
$PSDefaultParameterValues["New-Item:Force"] = {
    # 读取当前调用传入的ItemType值
    if ($PSBoundParameters.TryGetValue('ItemType', [ref]$itemType) -and $itemType -eq 'Directory') {
        # ItemType为Directory时启用Force
        return $true
    }
    # 其余情况沿用默认行为,不启用Force
    return $false
}

逻辑说明

  1. 你之前通过$args无法取到-ItemType的值,是因为$args只存储未被命令参数集匹配的零散参数,显式传入的绑定参数都会收录在$PSBoundParameters哈希表中
  2. 上述代码生效后,调用New-Item -ItemType Directory时会自动追加-Force参数,创建文件类型的条目时不会改变原有默认行为

内容的提问来源于stack exchange,提问作者Jani Hyytiäinen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:48:04