Powershell 脚本仅从变量中获取第一个值,而 运行 Azure webjobs 的验证脚本

Powershell script taking only the first value from the variable while running the validation script of Azure webjobs

我是 运行 下面的脚本,用于检查部署过程中连续 webjobs.As 部分的验证,我正在停止 webjobs 并上传 jar 文件,然后启动 webjobs.After 启动 webjobs.I 需要验证是否所有连续 webjobs 正确启动或 not.If 不是 运行,它应该使我的 VSTS powershell 任务失败并显示哪个连续 webjobs 不是 运行.

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

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

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

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

参考这段代码:

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