Состояние проверки Azure Runbook

Ниже приведен модуль Runbook службы автоматизации Azure, который запускает сценарий Powershell. Он проверяет, есть ли в Runbook уже запущенные задания, и, если нет, выполняет какой-нибудь скрипт.

Эта проблема:

Если я запускаю его на панели тестирования, он работает нормально, но как только я запускаю его по расписанию или запускаю как задание, он всегда существует с запущенным выходным заданием. На моем ноутбуке нет запущенных заданий, и код с моего ноутбука тоже показывает, что он не работает. Почему он хорошо работает на панели тестирования Runbook, но не работает при нормальном запуске?

param (
[string]$runbook = "test-rb",
[string]$rgName = "test-rg",
[string]$aaName = "test-aa"
)

$jobs = Get-AzAutomationJob -ResourceGroupName $rgName -AutomationAccountName $aaName -RunbookName $runbook
#$Jobs.status

# Check to see if it is already running

if (($jobs.status -contains "Running") -Or ($jobs.Status -eq "New"))
{   
    Write-Output "Runbook execution is stopped [$runbook] - there is another job currently running."
    exit 1
} 
else
{
    Write-Output "Proceed with runbook execution [$runbook]  - there are no interfering jobs running."
}

try {
    ....my script
}
catch {
    ....something something
}

person Mund    schedule 04.03.2020    source источник


Ответы (1)


Поскольку, когда вы запустите задание, оно получит себя как Running задание с помощью команды Get-AzAutomationJob, добавьте Write-Output $jobs в свой сценарий, см. Снимок экрана ниже, обратите внимание, что Id и JobId совпадают.

введите здесь описание изображения

Чтобы решить эту проблему, вы можете использовать $jobs = $jobs[1..($jobs.Length-1)], он исключит себя, тогда скрипт будет работать нормально.

Мой образец:

$connectionName = "AzureRunAsConnection"
try
{
    # Get the connection "AzureRunAsConnection "
    $servicePrincipalConnection=Get-AutomationConnection -Name $connectionName         

    "Logging in to Azure..."
    $null = Add-AzAccount `
        -ServicePrincipal `
        -TenantId $servicePrincipalConnection.TenantId `
        -ApplicationId $servicePrincipalConnection.ApplicationId `
        -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint 
}
catch {
    if (!$servicePrincipalConnection)
    {
        $ErrorMessage = "Connection $connectionName not found."
        throw $ErrorMessage
    } else{
        Write-Error -Message $_.Exception
        throw $_.Exception
    }
}
$jobs = Get-AzAutomationJob -ResourceGroupName <resourcegroup-name> -AutomationAccountName joyauto1 -RunbookName test1
$jobs = $jobs[1..($jobs.Length-1)]
if (($jobs.status -contains "Running") -Or ($jobs.Status -eq "New"))
{   
    Write-Output "Runbook execution is stopped [] - there is another job currently running."
    exit 1
} 
else
{
    Write-Output "Proceed with runbook execution []  - there are no interfering jobs running."
}

введите здесь описание изображения

person Joy Wang    schedule 05.03.2020