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

PowerShell中如何在param执行后获取函数调用的原始入参列表

解决方案

可以通过$PSBoundParameters内置自动变量实现需求,具体代码如下:

function myfunction {
    param([string]$msg1, [string]$msg2)

    $preinvoke = @()
    foreach ($paramKey in $PSBoundParameters.Keys) {
        $preinvoke += "-$paramKey"
        $preinvoke += $PSBoundParameters[$paramKey]
    }

    write-host "You called this command like this: myfunction $preinvoke"
}

实现说明

  • $PSBoundParameters是PowerShell原生提供的自动变量,会自动存储当前函数实际接收到的所有已绑定参数的键值对,仅包含调用时实际传入的参数,未传的默认值参数不会被纳入
  • 如果需要兼容调用时不写参数名直接传值的位置参数场景,可以额外追加$args变量存储的未绑定参数,修改后的代码如下:
function myfunction {
    param([string]$msg1, [string]$msg2)

    $preinvoke = @()
    foreach ($paramKey in $PSBoundParameters.Keys) {
        $preinvoke += "-$paramKey"
        $preinvoke += $PSBoundParameters[$paramKey]
    }
    # 追加未绑定的位置参数
    $preinvoke += $args

    write-host "You called this command like this: myfunction $preinvoke"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:45:04