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

如何通过AZ CLI将本地JSON文件导入Azure DevOps库变量组?

使用AZ CLI导入本地JSON到Azure DevOps变量组

修正后的完整脚本

针对你的需求,以下是可以正确导入多个变量(包括普通/秘密变量)的PowerShell脚本:

# 替换为你的JSON文件路径(桌面路径示例:C:\Users\你的用户名\Desktop\var.json)
$jsonPath = "C:\Users\<你的用户名>\Desktop\var.json"
$orgUrl = "https://dev.azure.com/{你的组织名}"
$projectName = "{你的项目名或ID}"

# 读取并解析JSON文件
$json = Get-Content -Path $jsonPath | Out-String | ConvertFrom-Json

# 处理变量列表,转换为AZ CLI支持的key=value格式
$variableList = @()
$secretVarNames = @()

foreach ($var in $json.variables.PSObject.Properties) {
    # 拼接变量名和值
    $variableList += "$($var.Name)=$($var.Value.value)"
    # 记录秘密变量名,后续添加--secret参数
    if ($var.Value.isSecret) {
        $secretVarNames += $var.Name
    }
}

# 将变量列表转为空格分隔的字符串
$variablesParam = $variableList -join " "

# 构建AZ CLI命令参数
$azCommandArgs = @(
    "pipelines", "variable-group", "create",
    "--name", $json.name,
    "--variables", $variablesParam,
    "--description", $json.description,
    "--detect", "false",
    "--org", $orgUrl,
    "--project", $projectName
)

# 如果有秘密变量,追加--secret参数
if ($secretVarNames.Count -gt 0) {
    foreach ($secretName in $secretVarNames) {
        $azCommandArgs += "--secret", $secretName
    }
}

# 执行命令
& az @azCommandArgs

原命令的问题说明

  1. Get-Content语法错误:
    原命令中Get-Content -Path C:\variables\var.json out-string | out-string参数格式错误,正确写法是通过管道传递给Out-String后,再解析为JSON对象。

  2. --variables参数格式不兼容:
    AZ CLI的--variables参数不接受PowerShell自定义对象(你代码中的$varname是PSCustomObject),必须传入空格分隔的key=value字符串,或者符合要求的扁平化JSON字符串。

批量导入多个JSON文件(可选)

如果需要批量导入多个变量组JSON文件,可以循环遍历目录中的所有JSON文件:

$jsonDir = "C:\Users\<你的用户名>\Desktop\变量组JSON"
$orgUrl = "https://dev.azure.com/{你的组织名}"
$projectName = "{你的项目名或ID}"

Get-ChildItem -Path $jsonDir -Filter *.json | ForEach-Object {
    $json = Get-Content -Path $_.FullName | Out-String | ConvertFrom-Json
    
    # 后续变量处理、命令构建逻辑同单文件脚本
    $variableList = @()
    $secretVarNames = @()
    foreach ($var in $json.variables.PSObject.Properties) {
        $variableList += "$($var.Name)=$($var.Value.value)"
        if ($var.Value.isSecret) {
            $secretVarNames += $var.Name
        }
    }
    $variablesParam = $variableList -join " "
    
    $azCommandArgs = @(
        "pipelines", "variable-group", "create",
        "--name", $json.name,
        "--variables", $variablesParam,
        "--description", $json.description,
        "--detect", "false",
        "--org", $orgUrl,
        "--project", $projectName
    )
    
    if ($secretVarNames.Count -gt 0) {
        foreach ($secretName in $secretVarNames) {
            $azCommandArgs += "--secret", $secretName
        }
    }
    
    Write-Host "正在导入变量组: $($json.name)"
    & az @azCommandArgs
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 10:33:24