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

PowerShell如何通过变量动态调用指定格式函数,无需编写多If判断

PowerShell 动态调用指定规则命名函数的实现方案

你可以通过PowerShell内置的 & 调用运算符实现需求,无需编写大量分支判断,核心逻辑是先拼接出完整的目标函数名,再通过运算符执行。

完整实现代码

function Invoke-Script {
    param (
        [Parameter(Mandatory = $true)]       
        [string]$Script,
        # 透传所有额外参数给目标函数
        [Parameter(ValueFromRemainingArguments = $true)]
        $PassedArgs
    )

    # 拼接完整目标函数名
    $targetFunc = "Invoke-$Script"

    # 校验目标函数是否存在,避免报错
    if (-not (Get-Command -Name $targetFunc -CommandType Function -ErrorAction SilentlyContinue)) {
        throw "未找到对应函数:$targetFunc,请检查传入的Script参数是否正确"
    }

    # 调用目标函数,传入所有透传参数
    & $targetFunc @PassedArgs
}

功能说明

  • 动态调用逻辑:& 是PowerShell的调用运算符,支持传入字符串格式的函数/命令名执行,会自动解析变量值,不会当成字面量处理。
  • 错误校验:提前判断目标函数是否存在,返回友好的错误提示,避免原生的命令不存在报错。
  • 参数透传:如果你定义的 Invoke-Txxxx 类函数本身需要传入参数,额外传入的参数会自动透传给目标函数,使用示例如下:
    # 等价于执行 Invoke-T1234 -Target 192.168.1.1 -Port 443
    Invoke-Script -Script T1234 -Target 192.168.1.1 -Port 443
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:45:06