Functions/Add-AdbItemTemplate.ps1
<#
.SYNOPSIS Add the template name to a the adb item. .DESCRIPTION This command will query all existing templates on the adb item, merge them with the spcified template name and then update the new template list. .INPUTS None .OUTPUTS None .EXAMPLE PS C:\> Add-AdmItemTemplate -Name 'myname' -Template 'mytpl' Add the template mytpl to the item myname. #> function Add-AdbItemTemplate { [CmdletBinding(SupportsShouldProcess = $true)] param ( # The adb session. [Parameter(Mandatory = $false)] [PSTypeName('Adb.Session')] [System.Object] $Session, # The item name. [Parameter(Mandatory = $true)] [System.String] $Name, # The template to add to the item. [Parameter(Mandatory = $true)] [System.String] $Template ) $Session = Test-AdbSession -Session $Session $item = Get-AdbItem -Session $Session -Name $Name # Prepare the template list $templates = [System.String[]] $item.templatesNames $templates += $Template $templates = $templates | Select-Object -Unique | Sort-Object $item = [PSCustomObject] @{ name = $Name templatesNames = $templates } $requestSplat = Get-AdbSessionRequestSplat -Session $Session -Method 'Put' $requestSplat['Uri'] = '{0}/items/{1}' -f $Session.Uri, $Name $requestSplat['Body'] = $item | ConvertTo-Json -Compress -Depth 99 if ($PSCmdlet.ShouldProcess($requestSplat.Uri, $requestSplat.Method.ToUpper())) { Write-Verbose ('{0} {1} {2}' -f $requestSplat.Method.ToUpper(), $requestSplat.Uri, $requestSplat.Body) Invoke-RestMethod @requestSplat -Verbose:$false -ErrorAction 'Stop' | Out-Null } } |