utilities/e2e-template-assets/scripts/Start-ImageTemplate.ps1 (69 lines of code) (raw):
<#
.SYNOPSIS
Create image artifacts from a given image template
.DESCRIPTION
Create image artifacts from a given image template
.PARAMETER ImageTemplateName
Mandatory. The name of the image template
.PARAMETER ImageTemplateResourceGroup
Mandatory. The resource group name of the image template
.PARAMETER NoWait
Optional. Run the command asynchronously
.EXAMPLE
./Start-ImageTemplate -ImageTemplateName 'vhd-img-template-001-2022-07-29-15-54-01' -ImageTemplateResourceGroup 'validation-rg'
Create image artifacts from image template 'vhd-img-template-001-2022-07-29-15-54-01' in resource group 'validation-rg' and wait for their completion
.EXAMPLE
./Start-ImageTemplate -ImageTemplateName 'vhd-img-template-001-2022-07-29-15-54-01' -ImageTemplateResourceGroup 'validation-rg' -NoWait
Start the creation of artifacts from image template 'vhd-img-template-001-2022-07-29-15-54-01' in resource group 'validation-rg' and do not wait for their completion
#>
[CmdletBinding(SupportsShouldProcess)]
param (
[Parameter(Mandatory = $true)]
[string] $ImageTemplateName,
[Parameter(Mandatory = $true)]
[string] $ImageTemplateResourceGroup,
[Parameter(Mandatory = $false)]
[switch] $NoWait
)
begin {
Write-Debug ('{0} entered' -f $MyInvocation.MyCommand)
# Install required modules
$currentVerbosePreference = $VerbosePreference
$VerbosePreference = 'SilentlyContinue'
$requiredModules = @(
@{ Name = 'Az.ImageBuilder'; Version = '0.4.0' }
)
foreach ($module in $requiredModules) {
$installationInput = @{
Name = $module.Name
Repository = 'PSGallery'
Scope = 'CurrentUser'
Force = $true
}
if ($Module.Version) {
$installationInput['RequiredVersion'] = $module.Version
}
Install-Module @installationInput
if ($installed = Get-Module -Name $module.Name -ListAvailable) {
Write-Verbose ('Installed module [{0}] with version [{1}]' -f $installed.Name, $installed.Version) -Verbose
}
}
$VerbosePreference = $currentVerbosePreference
}
process {
# Create image artifacts from existing image template
$resourceActionInputObject = @{
ImageTemplateName = $imageTemplateName
ResourceGroupName = $imageTemplateResourceGroup
}
if ($NoWait) {
$resourceActionInputObject['NoWait'] = $true
}
if ($PSCmdlet.ShouldProcess('Image template [{0}]' -f $imageTemplateName, 'Start')) {
$null = Start-AzImageBuilderTemplate @resourceActionInputObject
Write-Verbose ('Created/initialized creation of image artifacts from image template [{0}] in resource group [{1}]' -f $imageTemplateName, $imageTemplateResourceGroup) -Verbose
}
}
end {
Write-Debug ('{0} exited' -f $MyInvocation.MyCommand)
}