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

Windows任务计划程序运行PowerShell触发ACR Build失败排查

问题根因

任务计划触发时ACR Build步骤秒退、未实际执行构建的核心原因有两点:

  • 构建上下文路径依赖默认工作目录:脚本中az acr build命令使用.指代当前路径作为本地构建上下文目录,但Windows任务计划程序启动PowerShell进程时,默认工作目录为C:\Windows\System32(未配置任务「起始于」参数时),该路径下不存在你的Dockerfile和构建源文件,az cli找不到构建上下文直接退出,未触发远端构建流程。
  • 错误捕获与日志逻辑缺失:现有脚本仅捕获终止型错误,az acr build执行失败抛出的非终止错误不会进入Catch块;同时仅重定向标准输出流到日志,未捕获标准错误流,导致日志无具体报错,看起来像命令被直接跳过。

两个运行场景中均出现的docker命令找不到报错不影响ACR Build执行:az acr build是Azure云端托管构建任务,完全不需要本地安装Docker,脚本中的docker login步骤属于冗余逻辑,可直接删除。
前置认证、查询类步骤执行正常的原因是:az登录、切订阅、查ACR信息、列仓库这些操作都是纯云端API调用,不依赖本地文件路径,不受工作目录影响。

修复方案

按以下步骤调整即可:

    1. 脚本开头显式指定构建目录绝对路径,不依赖默认工作目录。在所有业务逻辑执行前加一行,替换为你实际存放Dockerfile和构建源文件的路径:
Set-Location "D:\your\actual\build\context\path"
    1. 修改任务计划配置:编辑对应任务的「操作」项,在「起始于(可选)」字段填入上述构建目录的绝对路径,不要留空。
    1. 优化日志重定向逻辑,捕获全量输出。将az acr build行的重定向规则修改为如下形式,把错误、警告等所有流都写入日志,方便后续排查:
az acr build -t $myimage$Date -r $myreg . --platform windows *>&1 | Out-File -FilePath $logfile -Append
    1. (可选)删除冗余的docker login代码块,避免无关报错干扰日志判断,az acr build会自动复用之前服务主体登录的身份完成ACR侧认证,无需单独执行docker登录操作。
验证标准

修改完成后手动触发任务计划任务,查看日志:

  • 修复生效时,日志会和控制台手动运行一致,出现Downloading source code...提示,后续正常执行源码上传、云端构建流程
  • 若仍快速退出,日志会打印az cli的具体报错信息,可根据报错内容针对性调整配置。

内容的提问来源于stack exchange,提问作者Dean O'Brien

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:12:18