从json文件导入Azure Devops管道变量

时间:2019-10-28 20:11:46

标签: json azure-devops azure-powershell

我想使用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文件用作存储变量的地方,或者我可以使用其他文件格式? 更新: enter image description here

1 个答案:

答案 0 :(得分:1)

为什么不直接使用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

enter image description here

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