Невозможно получить значение параметров, переданных асинхронному заданию Powershell (scriptblock) - PullRequest
0 голосов
/ 04 января 2019

Я использую сценарий powershell, чтобы создать резервную копию моей базы данных Azure SQL, а затем уменьшить ее до стандартного уровня. Поскольку уменьшение размера базы данных занимает много времени, ее можно перенести в асинхронный процесс, а после ее завершения можно отслеживать состояние из основного сценария.

Я могу получить значения параметров в блоке сценария при попытке выполнить код сценария локально на моем компьютере, однако, когда этот сценарий добавляется в качестве задачи в определение моего выпуска, он не может сформировать запрос с переданными значениями и отображение содержимого блока сценария непосредственно в журнале.

Основная задача заключается в том, чтобы иметь возможность в кратчайшие сроки перевести резервную копию базы данных на стандартный уровень. Любой новый подход к этому также помог бы.

Param
(
    [String]$ResourceGroupName,
    [String]$Servername,
    [String]$DatabaseName,
    [String]$Edition,
    [String]$NewPricingTier
)

$CopyDatabase = ($Databasename +'_Bkp')
try
{    
    #Take a backup of current database snapshot
    Write-Host ("Creating Backup " + $CopyDatabase)
    $NewCopyMsgdb = New-AzureRmSqlDatabaseCopy -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -CopyDatabaseName $CopyDatabase
 try
    {
        if ($NewCopyMsgdb  -ne $null)
        {
            Write-Host "Database copied successfully"
            Write-Host "----------------------------"

            Start-Job -Name DowngradePricingTier -ScriptBlock {
                #Adjust the pricing to lower level that was needed
                Write-Host "Changing the Pricing Tier through async job "
                Set-AzureRmSqlDatabase -DatabaseName $Using:CopyDatabase -ServerName $Using:ServerName -ResourceGroupName $Using:ResourceGroupName -Edition $Using:Edition -RequestedServiceObjectiveName $Using:NewPricingTier
            }
        }
    }
    catch
    {
        Write-Host "Unable to change the pricing tier due to the following error :" -ForegroundColor Red
        write-host "Exception Type: $($_.Exception.GetType().FullName)" -ForegroundColor Red
        write-host "Exception Message: $($_.Exception.Message)" -ForegroundColor Red 
    }

    #Display details for all jobs
    Get-Job -Name DowngradePricingTier | Wait-Job  | Receive-Job  | Remove-Job -Force
}
catch
{
    Write-Host "Database has not been copied successfully"
}

Выходные данные, сгенерированные в файле журнала задач Output in the logs Job output details

...