提供下面的脚本来启动azure中的Webjobs。但是我将Json文件包含在Powershell脚本中并运行Webjobs.Its仅适用于一个环境。但我希望将相同的脚本用于多个具有不同Webjob名称的环境。那么如何修改此脚本以便我可以在发布定义中停止并启动VSTS中的Webjobs,目前,我有4个用于Dev Environment的Webjobs,我有8个用于Int Environment的Webjobs,具有不同的azure订阅。那么我怎样才能将下面的脚本用于不同的环境。请帮我解决这个问题。我不能在所有环境中使用下面的脚本,因为我只导入了一个json文件。所以它只接受特定的json参数。但在我的情况下,json参数对于不同的环境会有所不同。那么如何将不同的json文件内容导入下面的脚本?是否有可能包含多个json文件,脚本只能接受基于我在VSTS中的发布定义中运行的环境的特定Json脚本,并且可以相应地运行。
Parameter.json:
{
"userName": "user1",
"password": "password1",
"webAppName": "webapp1",
"resourceGroup": "resourceGroup1",
"webJobs": [
{
"name": "abc",
"typeName": "continuous"
},
{
"name": "def",
"typeName": "continuous"
}
]
}
脚本:
[object]$paramObj=Get-Content "PowerShellModuleProject1\parameter2.json"|ConvertFrom-Json
$userName =$paramObj.userName
$password =$paramObj.password
$webAppName =$paramObj.webAppName
$resourceGroup=$paramObj.resourceGroup
[object[]]$webJobs=$paramObj.webJobs
foreach($wj in $webjobs){
if($wj.typeName -eq "continuous")
{
Invoke-AzureRmResourceAction -ResourceGroupName $resourceGroup -ResourceType Microsoft.Web/sites/ContinuousWebJobs -ResourceName "$webAppName/$($wj.name)" -Action start -ApiVersion 2015-08-01 -Force
Write-Host "continuous"
Write-Host $wj.name
}
else{
Invoke-AzureRmResourceAction -ResourceGroupName $resourceGroup -ResourceType Microsoft.Web/sites/TriggeredWebJobs -ResourceName "$webAppName/$($wj.name)" -Action run -ApiVersion 2015-08-01 -force
Write-Host "triggered"
Write-Host $wj.name
}
}
答案 0 :(得分:0)
您可以像这样更新Parameter.json文件(parameter2.json):
{
"Dev": {
"userName": "user1",
"password": "password1",
"webAppName": "webapp1",
"resourceGroup": "resourceGroup1",
"webJobs": [
{
"name": "abcDev",
"typeName": "continuous"
},
{
"name": "defDev",
"typeName": "continuous"
}
]
},
"Int": {
"userName": "userInt",
"password": "passwordInt",
"webAppName": "webappInt",
"resourceGroup": "resourceGroupInt",
"webJobs": [
{
"name": "abcInt",
"typeName": "continuous"
},
{
"name": "defInt",
"typeName": "continuous"
}
]
}
}
脚本:
param(
[string]$currentEnv
)
[object]$paramObj=Get-Content "PowerShellModuleProject1\parameter2.json"|ConvertFrom-Json
$userName =$paramObj.$currentEnv.userName
$password =$paramObj.$currentEnv.password
$webAppName =$paramObj.$currentEnv.webAppName
$resourceGroup=$paramObj.$currentEnv.resourceGroup
[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 start -ApiVersion 2015-08-01 -Force
Write-Host "continuous"
Write-Host $wj.name
}
else{
Invoke-AzureRmResourceAction -ResourceGroupName $resourceGroup -ResourceType Microsoft.Web/sites/TriggeredWebJobs -ResourceName "$webAppName/$($wj.name)" -Action run -ApiVersion 2015-08-01 -force
Write-Host "triggered"
Write-Host $wj.name
}
}
参数:-currentEnv $(Release.EnvironmentName)
。修改发布定义中的每个环境的名称。
或者您可以为每个发布环境添加具有相同名称的环境变量(例如currentEnv),以及参数:-currentEnv $(currentEnv)