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

如何使用Azure PowerShell模块下载Azure DevOps通用构件

使用Azure PowerShell操作Azure Artifacts通用构件的方案

你已经能用Azure CLI完成通用构件的发布,确实目前Azure PowerShell模块没有直接对应az artifacts universal publish的Cmdlet,但可以通过调用Azure Artifacts的REST API结合PowerShell来实现发布和下载操作,以下是具体方案:

一、发布通用构件

发布需要调用UniversalPackages/feed/{feedId}/package/{packageName}/version/{packageVersion}/content这个REST API端点,步骤如下:

  1. 准备有权限的PAT(个人访问令牌),需要授予Packaging (Read & Write)权限
  2. 编写PowerShell脚本实现发布,示例如下:
# 配置参数
$organization = "msazure"
$project = "abc"
$feed = "你的Feed名称"
$app = "你的构件名称"
$version = "1.0.0"
$path = "本地构件文件/文件夹路径"
$pat = "你的PAT令牌"

# 构造认证头
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$pat"))
$headers = @{Authorization = "Basic $base64AuthInfo"}

# 获取Feed ID(如果不知道Feed ID,可以通过这个API查询)
$feedId = (Invoke-RestMethod -Uri "https://feeds.dev.azure.com/$organization/$project/_apis/packaging/feeds?api-version=7.1-preview.1" -Headers $headers).value | Where-Object { $_.name -eq $feed } | Select-Object -ExpandProperty id

# 上传构件
$uploadUri = "https://feeds.dev.azure.com/$organization/$project/_apis/packaging/feeds/$feedId/upack/packages/$app/versions/$version?api-version=7.1-preview.1"
Invoke-RestMethod -Uri $uploadUri -Method Put -Headers $headers -InFile $path -ContentType "application/octet-stream"

二、下载通用构件

下载需要先查询到目标版本的构件内容地址,再执行下载:

  1. 先通过你提到的API查询包的版本信息:
# 查询包信息(对应你提供的REST API)
$packageQueryUri = "https://feeds.dev.azure.com/$organization/$project/_apis/packaging/Feeds/$feedId/packages?packageNameQuery=$app&api-version=7.1-preview.1"
$packageInfo = Invoke-RestMethod -Uri $packageQueryUri -Headers $headers

# 获取目标版本的下载地址
$targetVersion = $packageInfo.value.versions | Where-Object { $_.version -eq $version } | Select-Object -ExpandProperty downloadUrl
  1. 执行下载:
# 下载到本地指定路径
Invoke-RestMethod -Uri $targetVersion -Headers $headers -OutFile "本地保存路径/文件名"

关于REST API的补充说明

你提到的GET https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/Feeds/{feedId}/packages?packageNameQuery={packageName}确实主要用于查询包的基本信息,但Azure Artifacts还提供了专门用于发布和下载的REST API端点,上面的脚本就是基于这些端点实现的。

另外,你原来使用的Azure CLI发布命令如下,供参考:
```az artifacts universal publish --organization https://msazure.visualstudio.com/
--project "abc" --scope project
--feed "$feed" --name "$app"
--version $version `
--path $path

内容的提问来源于stack exchange,提问作者Node.JS
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:49:59