Powershell脚本在运行Azure webjobs

时间:2017-11-20 07:40:31

标签: powershell azure azure-devops azure-webjobs

我运行下面的脚本来检查连续webjob的验证。作为我的部署过程的一部分,我停止webjobs并上传jar文件,然后启动webjobs.After启动webjobs.I需要验证是否正确启动所有连续webjobs。如果没有运行,它应该使我的VSTS powershell任务失败,并显示哪个连续的webjob没有运行。

所以在下面的脚本 $ status 变量只是采取第一个连续webjob的状态并进入循环并显示所有webjobs正在运行,但即使在启动所有连续的webjobs后,一些webjobs没有正确启动,在这种情况下我的脚本不应该说所有的webjobs都在运行。它应该使任务失败并显示哪些特定的webjobs没有运行。

任何人都可以帮助我解决这个问题。 如果需要,请帮助我更改我的脚本,因为我是powershell的新手。所以$ status变量应检查连续webjobs的所有状态,然后只进入循环并执行脚本并打印webjobs正在运行。

仅供参考,我通过VSTS运行powershell脚本并连接到Azure。

Powershell脚本:

$ResourceGroupName=""
$AppService=""
$Apiversion=""
##ContinuousWebJobs
$continuejob=Get-AzureRmResource -ResourceGroupName $ResourceGroupName -ResourceName $AppService -ResourceType Microsoft.web/sites/ContinuousWebJobs -ApiVersion $Apiversion 
$status=$continuejob.Properties.status
#$status='Running'
$j=1
while($j -le 5)
{
     if($status -ne 'Running')
     {
        $continuejob=Get-AzureRmResource -ResourceGroupName $ResourceGroupName -ResourceName $AppService -ResourceType Microsoft.web/sites/ContinuousWebJobs -ApiVersion $Apiversion 
        $status=$continuejob.Properties.status
        $j+=1 
        "waiting for running, will sleep 6s..."
        sleep 6
     }else{
        Write-Host "already running, exit this script" -BackgroundColor White -ForegroundColor Green
        sleep 6 
        quit
     }
}
Write-Host  "Error:waiting for 30s already, The job is not running" -ForegroundColor Red -BackgroundColor Red

1 个答案:

答案 0 :(得分:0)

参考此代码:

    $ResourceGroupName="XXX"
        $AppService="XXXX"
        $Apiversion="2016-08-01"
        $errorsJobs=New-Object System.Collections.ArrayList
        $continuejobs=Get-AzureRmResource -ResourceGroupName $ResourceGroupName -ResourceName $AppService -ResourceType Microsoft.web/sites/ContinuousWebJobs -ApiVersion $Apiversion 
        foreach($webJob in $continuejobs){
Write-Host $webJob
        $status=$webJob.Properties.status
        if($status -ne "Running"){
          $errorsJobs.Add($webJob.Properties.name)
        }}
      if($errorsJobs.Count -gt 0){
    $result=$errorsJobs -join ";"
    Write-Error $result
    }