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

通过REST API下载DevOps Git仓库子文件夹内容为Zip格式

Azure DevOps 下载指定仓库文件夹为Zip包的PowerShell实现

最优方案:利用Azure DevOps REST API归档端点

Azure DevOps提供了专门的REST API端点,可直接生成并下载指定仓库文件夹的Zip包,和网页端“下载指定文件夹为Zip”的功能完全一致,无需遍历文件或拉取整个仓库,是最高效的实现方式。

PowerShell脚本实现步骤

1. 配置核心参数

先定义所需的Azure DevOps环境参数和目标信息:

# Azure DevOps 配置参数
$orgName = "你的组织名"
$projectName = "你的项目名"
$repoName = "SomeRepo"
$targetPath = "doc/build/html" # 仓库根目录下的目标文件夹路径
$branchName = "main" # 目标分支
$outputZipPath = "C:\temp\docs.zip" # 本地保存Zip的路径
$pat = "你的PAT令牌" # 需具备仓库读取权限

2. 构建API请求URL

按照REST API规范构建请求地址,指定分支和目标文件夹:

$apiUrl = "https://dev.azure.com/$orgName/$projectName/_apis/git/repositories/$repoName/items?path=$([Uri]::EscapeDataString($targetPath))&versionDescriptor[versionType]=branch&versionDescriptor[version]=$branchName&format=zip&api-version=7.1-preview.1"

3. 发送请求并保存Zip包

使用PowerShell的Invoke-RestMethod发送请求,处理身份验证并保存响应内容为Zip文件:

# 对PAT进行Base64编码
$encodedPat = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat"))

# 发送请求并保存Zip
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization = "Basic $encodedPat"} -OutFile $outputZipPath

关键注意事项

  • PAT权限:确保你的PAT拥有Code (Read)权限,否则会返回403权限错误
  • 路径格式:targetPath必须是仓库根目录下的相对路径,不能以斜杠开头或结尾
  • 分支正确性:确认branchName是目标文件夹所在的有效分支,也可替换为提交哈希或标签
  • API版本:示例使用7.1-preview.1,可根据Azure DevOps版本调整为最新稳定版

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:54:23