legacy/AzureImageBuilder/check-Image-Build-Status.ps1 (50 lines of code) (raw):

<# .SYNOPSIS Check the image build status .DESCRIPTION This script checks the image build status. .EXAMPLE .\check-Image-Build-Status.ps1 -SubscriptionName "mysubscription" -region westeurope -ResourceGroupName test-rg -newAvailabilitySetName AvSet1 -newProximityPlacementGroupName PPG1 .LINK https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities .NOTES v0.1 - Initial version #> <# Copyright (c) Microsoft Corporation. Licensed under the MIT license. #> #Requires -Modules Az.Compute #Requires -Version 5.1 function Get-ImageBuildStatus { [OutputType([string])] param( #Name of Image Gallery [Parameter(Mandatory = $true)][string]$galleryName, #Name of Image Definition [Parameter(Mandatory = $true)][string]$imageDefNameToCheck ) ### Update context $currentAzureContext = Get-AzContext ### Get instance profile $azureRmProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile $profileClient = New-Object Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient($azureRmProfile) Write-Verbose ("Tenant: {0}" -f $currentAzureContext.Subscription.Name) ### Get token $token = $profileClient.AcquireAccessToken($currentAzureContext.Tenant.TenantId) $accessToken = $token.AccessToken $managementEp = $currentAzureContext.Environment.ResourceManagerUrl $urlBuildStatus = [System.String]::Format("{0}subscriptions/{1}/resourceGroups/$ResourceGroupName/providers/Microsoft.VirtualMachineImages/imageTemplates/{2}?api-version=2020-02-14", $managementEp, $currentAzureContext.Subscription.Id, $imageDefNameToCheck) $buildStatusResult = Invoke-WebRequest -Method GET -Uri $urlBuildStatus -UseBasicParsing -Headers @{"Authorization" = ("Bearer " + $accessToken) } -ContentType application/json $buildJsonStatus = $buildStatusResult.Content $obj = ConvertFrom-JSON $buildJsonStatus Write-Host "Provisioning status: ("$obj.properties.lastRunStatus.runState") -" $obj.properties.lastRunStatus.runSubState if ($obj.properties.lastRunStatus.runState -eq "Failed") { Write-Error $obj.properties.lastRunStatus.message $URL = $obj.properties.lastRunStatus.message.Substring($obj.properties.lastRunStatus.message.IndexOf("build log location: ") + 20) $URL = $URL.SubString(0, $Url.IndexOf("OperationId") - 2) $OperationID = $obj.properties.lastRunStatus.message.SubString($obj.properties.lastRunStatus.message.IndexOf("OperationId") + 13) $OperationID = $OperationID.SubString(0, $OperationID.IndexOf(".")) } return $obj.properties.lastRunStatus.runState }