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

How to Call Json parameters as arguments via Powershell task in VSTS release definition?

我有 Json 文件具有以下内容,Powershell 脚本使用以下内容调用此 Json 文件 script.But 我想调用 Json 值作为 VSTS 的参数Powershell任务。请帮我看看如何调用inturn。

下面给出 webjob_list.json 我有用户名、密码、资源组、webapp 名称。我想使用参数部分下的 Powershell 任务通过 VSTS 发布定义将这 4 个参数称为参数。我不想将这 4 个值放在 Json 中,而是想作为参数从 Powershell 脚本中调用。

Json 脚本:

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"
      }
    ]

      }

webjobs 停止。ps1:

param(
[string]$currentEnv
)

[object]$paramObj=Get-Content "d:\a\r1\a\Jobs\WebJobs_scripts\WebJob_list.json" |ConvertFrom-Json
$userName =$paramObj.$currentEnv
$password =$paramObj.$currentEnv
$webAppName =$paramObj.$currentEnv
$resourceGroup=$paramObj.$currentEnv
[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
   }
}

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

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

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

VSTS > 发布 > 管道 > 新建

接下来创建开发环境

单击变量 link 并创建 4 个变量。

检查它们是否在开发环境范围内。

然后在您的 PowerShell 任务中创建一个参数块来接受变量

param(username, password, webappname, resourcegroup)

然后在 PowerShell 任务的脚本参数框中添加如下参数:

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

Json 文件:

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

      }
}

脚本:

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
   }
}