如何用AZ CLI将本地多个JSON文件导入Azure DevOps变量组
批量导入JSON文件到Azure DevOps变量组的修正脚本
问题背景
现有PowerShell脚本仅支持导入单个JSON文件到Azure DevOps库变量组,需要修改为可批量导入指定目录下所有JSON文件(当前需求为3个)的版本。
修正后的脚本
$jsonFilesDirectory = "C:\variables" $orgUrl = "https://dev.azure.com/<org-Name>" $projectName = "<Project-name>" # 获取目录下所有JSON文件 $jsonFiles = Get-ChildItem -Path $jsonFilesDirectory -Filter *.json foreach ($json in $jsonFiles) { # 直接使用文件完整路径,避免路径拼接错误 $jsonContent = Get-Content -Path $json.FullName | Out-String $variableGroup = $jsonContent | ConvertFrom-Json $groupName = $variableGroup.name $description = $variableGroup.description $variablesObject = $variableGroup.variables $variablesHashtable = @{} foreach ($property in $variablesObject.PSObject.Properties) { $variableName = $property.Name $variableValue = $property.Value.value $variablesHashtable[$variableName] = $variableValue } # 将哈希表转换为Azure CLI所需的键值对字符串 $variablesString = $variablesHashtable.GetEnumerator() | ForEach-Object { "$($_.Key)=$($_.Value)" } # 每个JSON文件对应创建一个变量组 az pipelines variable-group create ` --name $groupName ` --variables $variablesString ` --description $description ` --detect false ` --org $orgUrl ` --project $projectName }
修改说明
- 循环逻辑修正:将
az pipelines variable-group create命令移至foreach循环内部,确保每个JSON文件都会触发一次变量组创建操作——原脚本中该命令在循环外,仅会执行最后一次循环的变量值。 - 路径优化:使用
$json.FullName直接获取文件完整路径,避免手动拼接路径可能出现的错误。 - 配置解耦:将组织URL和项目名称单独提取为变量,便于后续维护修改。
内容的提问来源于stack exchange,提问作者albbla91
相关产品推荐
相关产品推荐

