首页 > 解决方案 > 从 json 文件导入 Azure Devops 管道变量

问题描述

我想使用 json 文件来存储 powershell 脚本使用的变量。在我配置了管道的 azure devops 中,管道包含 powershell 脚本,其中包含变量列表。我想使用 json 文件并将所有变量存储在这个文件中。我想将 json 文件存储在 Azure 存储库中,并在管道启动后使用它。我不想使用变量组。我找到了这个解决方案 [ Json to Variable ] https://marketplace.visualstudio.com/items?itemName=OneLuckiDev.json2variable&targetId=02fbae5c-cc01-4c8b-a90f-7393a3156347但我读到了一些关于这个任务的不恭维的意见。有什么方法可以使用 json 文件作为存储变量的地方,或者我可以使用不同的文件格式?更新: 在此处输入图像描述

标签: jsonazure-devopsazure-pipelinesazure-powershell

解决方案


为什么不直接使用 Powershell 内置 cmdlet ConvertFrom-Json:. 请参阅有关此 cmdlet 描述的官方文档:Powershell: ConvertFrom-Json

您可以添加脚本:

Get-Content "{JSON file path}" | out-string | ConvertFrom-Json

Get-Content会将 JSON 文件读入字符串数组,ConvertFrom-Json并将这些字符串转换为 PSCustomObject 对象。然后,您可以使用简单的杠杆点表示法(.)调用确切的对象,然后以这种格式将其用于任务脚本。

以下是供您参考的简单示例:

$data = Get-content {your JSON file path}| out-string | ConvertFrom-Json
Write-Output $data.ts

在此处输入图像描述

在这里,我在本地 Powershell-ISE 中进行了尝试,这与 Powershell 任务中的用法相同。ts是我的 JSON 对象之一。$(Build.SourcesDirectory)\..\..\...json在 azure devops 中,如果将文件存储在 Repos 中,则可以使用指定文件位置的路径。


推荐阅读