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

Azure DevOps托管Ubuntu管道报错:‘pwsh.exe’未被识别

问题分析与解决

核心问题

报错日志里的路径C:\azagent\A1\_work\1\ci\drop\pipeline-scripts\check-health.ps1直接说明:你的管道实际在Windows代理上运行,而非你指定的ubuntu-latest环境。尽管YAML里声明了ubuntu-latest,但当前组织的代理池配置存在问题,导致任务被分配到了Windows代理,而该代理未安装PowerShell 7(对应可执行文件pwsh.exe),因此触发错误。

解决方案

1. 核查代理池配置

  • 进入当前DevOps组织的项目设置 → 代理池
  • 找到ubuntu-latest对应的代理池,查看代理列表,确认所有代理均为Linux系统
  • 若代理池混有Windows代理,立即移除或重新配置代理池,确保仅包含Linux节点

2. 强制指定正确的代理池(可选)

如果默认的ubuntu-latest代理池配置混乱,可以直接指定专属的Linux代理池:

pool:
  name: '你的Linux专属代理池名称'
  vmImage: 'ubuntu-latest' # 保证代理池系统与vmImage匹配

3. 修复Windows代理的PowerShell 7环境(若必须用Windows代理)

如果业务需求必须在Windows代理上运行该任务,需确保代理已安装PowerShell 7:

  • 手动在Windows代理上安装PowerShell 7;
  • 或在管道中添加前置步骤自动安装:
- task: PowerShell@2
  displayName: '安装PowerShell 7'
  inputs:
    targetType: 'inline'
    script: |
      winget install --id Microsoft.PowerShell --source winget
    pwsh: false # 先用系统自带的Windows PowerShell执行安装

4. 确认管道顶层的池配置

检查YAML管道最顶层是否正确声明了vmImage: ubuntu-latest,避免被其他配置覆盖:

trigger:
- main

pool:
  vmImage: 'ubuntu-latest' # 确保该行存在且未被注释

steps:
- task: PowerShell@2
  displayName: 'Say hello'
  inputs:
    targetType: 'inline'
    script: |
      Write-Host "Hello"
    workingDirectory: '$(Pipeline.Workspace)'
    pwsh: true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:45:13