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

Azure流水线YAML的inline PowerShell脚本中能否定义使用函数?

问题解答

这个需求完全可以实现,你当前的写法错误是由PowerShell的执行顺序规则导致的。

PowerShell执行脚本时是从上到下逐行解析运行的,你在代码里先写了Do-Something的调用逻辑,再写Do-Something的函数定义,运行到调用行时函数还没有被注册到当前会话中,因此会抛出命令未找到的错误。

你只需要调整代码顺序,把函数定义放在所有调用语句的前面即可,修正后的示例如下:

- task: AzureCLI@2
  displayName: "My Task"
  inputs:
    scriptType: pscore
    scriptLocation: inlineScript
    inlineScript: |
      # 先定义函数
      function Do-Something { 
        Param
        (
          [Parameter(Mandatory=$true, Position=0)]
          [string] $Hello,
          [Parameter(Mandatory=$true, Position=1)]
          [string] $World
        )

        Write-Host "$Hello $World"
      }

      # 再调用函数
      Do-Something "hello" "world"
      Do-Something "goodbye" "world"

如果后续封装的公共函数较多,也可以将函数单独存为.ps1脚本文件上传到代码库,在inline脚本开头用点加载语法. ./common-func.ps1批量导入所有函数,进一步简化inline部分的代码量。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:54:10