如何通过VSTS版本定义中的Powershell任务将Json参数作为参数调用?

时间:2018-06-01 09:07:57

标签: json powershell azure-pipelines-release-pipeline

我有Json文件,下面和Powershell脚本使用下面的脚本调用这个Json文件。但是我想从VSTS Powershell任务中调用Json值作为参数。请帮我解释如何调用inturn。

鉴于以下count我有用户名,密码,资源组,webapp名称。我想使用参数部分下的Powershell任务通过VSTS Release定义将这4个参数作为参数调用。我不想将这4个值放在Json中,而是想从Powershell脚本中调用参数。

Json Script:

webjob_list.json

webjobs Stop.ps1:

WebJob_list.json:



    {
          "Dev": 
          {

            "userName": "abc-dev\\$abcjobs-dev",
            "password": "SKGGfiuqHdvJ09eCmhDmE4mBnL8PSAZhnQMxzb",
            "webAppName": "abcjobs-dev",
            "resourceGroup": "abc-Dev"
"webJobs": [   
      {
        "name": "webjobname",
        "typeName": "continuous"
      },
      {
        "name": "webjobname",
        "typeName": "continuous"
      },
      {
        "name": "webjobname",
        "typeName": "continuous"
      },
      {
        "name": "webjobname",
        "typeName": "continuous"
      }
    ]

      }

2 个答案:

答案 0 :(得分:0)

您的脚本看起来已经读取了json,但是要在需要在脚本本身的VSTS中设置它们的任务之间传递变量

Write-Host "##vso[task.setvariable variable=username]$username"

也可以从一开始就将变量存储在VSTS中,这可能是个不错的选择?

VSTS>发布>管道>新

接下来创建一个Dev环境

单击“变量”链接并创建4个变量。

检查它们是否限定在Dev环境中。

然后在PowerShell任务中创建一个param块来接受变量

param(username, password, webappname, resourcegroup)

然后在PowerShell任务的Script Arguments框中添加参数:

-username $(username) -password $(password) -webappname $(webappname) -resourcegroup $(resourcegroup)

答案 1 :(得分:0)

Json file:

  {
      "Dev": {
      "webJobs": [   
      {
        "name": "webjobname",
        "typeName": "continuous"
      },
      {
        "name": "webjobname",
        "typeName": "continuous"
      },
      {
        "name": "webjobname",
        "typeName": "continuous"
      },
      {
        "name": "webjobname",
        "typeName": "continuous"
      }
    ]

      }
}

Script:

param(
[string]$currentEnv,
[string]$username
[string]$password,
[string]$webAppName,
[string]$resourceGroup
)

[object]$paramObj=Get-Content "d:\a\r1\a\Jobs\WebJobs_scripts\WebJob_list.json" |ConvertFrom-Json
[object[]]$webJobs=$paramObj.$currentEnv.webJobs
foreach($wj in $webjobs)
{
  if($wj.typeName -eq "continuous")
   {
    Invoke-AzureRmResourceAction -ResourceGroupName $resourceGroup -ResourceType Microsoft.Web/sites/ContinuousWebJobs -ResourceName "$webAppName/$($wj.name)" -Action stop -ApiVersion 2015-08-01 -Force
    Write-Host "continuous"
    Write-Host $wj.name
   }
}